summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBen Bridle <ben@derelict.engineering>2025-02-01 17:48:27 +1300
committerBen Bridle <ben@derelict.engineering>2025-02-01 17:48:36 +1300
commit6aa4215cd51a2816fee3d60a844a7148664205b7 (patch)
treedfcd02cbf254bddfb33a7ae34d079019b2930e4c
parentdfd8d985da474bf4e2c080a1de36499eb6e13abb (diff)
downloadtoaster-6aa4215cd51a2816fee3d60a844a7148664205b7.zip
Support vertical borders in tables
The latest version of the markdown library includes support for a new vertical-border syntax in tables. When a table has a double-thickness pipe border between two columns in the markdown, each <th> and <td> cell in the column on the left side of the border is given the class 'border'.
-rw-r--r--Cargo.lock4
-rw-r--r--Cargo.toml2
-rw-r--r--src/generate_html.rs19
3 files changed, 15 insertions, 10 deletions
diff --git a/Cargo.lock b/Cargo.lock
index b4c5475..3afc5ef 100644
--- a/Cargo.lock
+++ b/Cargo.lock
@@ -4,8 +4,8 @@ version = 4
[[package]]
name = "markdown"
-version = "3.1.0"
-source = "git+git://benbridle.com/markdown?tag=v3.1.0#7933e285f9df67141094935ed4d1e525a920315b"
+version = "3.2.0"
+source = "git+git://benbridle.com/markdown?tag=v3.2.0#883a2a63023ea9b1e4b2bb51831ea1dafcb7346a"
[[package]]
name = "recipe"
diff --git a/Cargo.toml b/Cargo.toml
index 4234ef9..04a80b8 100644
--- a/Cargo.toml
+++ b/Cargo.toml
@@ -5,7 +5,7 @@ edition = "2021"
[dependencies]
vagabond = { git = "git://benbridle.com/vagabond", tag = "v1.1.0" }
-markdown = { git = "git://benbridle.com/markdown", tag = "v3.1.0" }
+markdown = { git = "git://benbridle.com/markdown", tag = "v3.2.0" }
recipe = { git = "git://benbridle.com/recipe", tag = "v1.4.0" }
xflags = "0.4.0-pre.1"
diff --git a/src/generate_html.rs b/src/generate_html.rs
index 8f2ae62..8490379 100644
--- a/src/generate_html.rs
+++ b/src/generate_html.rs
@@ -223,7 +223,10 @@ pub fn document_to_html(document: &MarkdownDocument, page: &Page, website: &Webs
Block::Table(table) => wrap!("div", "class='table'", wrap!("table", {
wrap!("thead",
wrap!("tr", for column in &table.columns {
- tag!("th", column.name);
+ match column.border_right {
+ true => tag!("th", column.name, "class='border'"),
+ false => tag!("th", column.name),
+ }
})
);
for section in &table.sections {
@@ -235,19 +238,21 @@ pub fn document_to_html(document: &MarkdownDocument, page: &Page, website: &Webs
"No" => "✗",
other => other,
};
- let align = match text {
+ let mut class = match text {
"--" => "c",
_ => match column.alignment {
Alignment::Left => "l",
Alignment::Center => "c",
Alignment::Right => "r",
},
+ }.to_string();
+ if ["No", "--", "0"].contains(&text_raw.as_str()) {
+ class.push_str(" dim");
};
- let class = match ["No", "--", "0"].contains(&text_raw.as_str()) {
- true => format!("{align} dim"),
- false => format!("{align}"),
- };
- html!("<td class='{}'>{}</td>", class, text);
+ if column.border_right {
+ class.push_str(" border");
+ }
+ html!("<td class='{class}'>{text}</td>");
})
})
};