diff options
author | Ben Bridle <ben@derelict.engineering> | 2025-02-01 17:48:27 +1300 |
---|---|---|
committer | Ben Bridle <ben@derelict.engineering> | 2025-02-01 17:48:36 +1300 |
commit | 6aa4215cd51a2816fee3d60a844a7148664205b7 (patch) | |
tree | dfcd02cbf254bddfb33a7ae34d079019b2930e4c | |
parent | dfd8d985da474bf4e2c080a1de36499eb6e13abb (diff) | |
download | toaster-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.lock | 4 | ||||
-rw-r--r-- | Cargo.toml | 2 | ||||
-rw-r--r-- | src/generate_html.rs | 19 |
3 files changed, 15 insertions, 10 deletions
@@ -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" @@ -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>"); }) }) }; |