Improve <table> output of 'to html', (#5699)

* Fix <table> output of 'to html',

Specifically, add <thead> and <tbody> elements.
That allows for better styling and (future) some neat JavaScript.

* Update tests for previous <table> changes.
This commit is contained in:
Per Bothner 2022-06-02 15:34:31 -07:00 committed by GitHub
parent e4bcd1934d
commit a06299c77a
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 7 additions and 7 deletions

View File

@ -118,21 +118,21 @@ impl Command for ToHtml {
description: "Outputs an HTML string representing the contents of this table", description: "Outputs an HTML string representing the contents of this table",
example: "[[foo bar]; [1 2]] | to html", example: "[[foo bar]; [1 2]] | to html",
result: Some(Value::test_string( result: Some(Value::test_string(
r#"<html><style>body { background-color:white;color:black; }</style><body><table><tr><th>foo</th><th>bar</th></tr><tr><td>1</td><td>2</td></tr></table></body></html>"#, r#"<html><style>body { background-color:white;color:black; }</style><body><table><thead><tr><th>foo</th><th>bar</th></tr></thead><tbody><tr><td>1</td><td>2</td></tr></tbody></table></body></html>"#,
)), )),
}, },
Example { Example {
description: "Optionally, only output the html for the content itself", description: "Optionally, only output the html for the content itself",
example: "[[foo bar]; [1 2]] | to html --partial", example: "[[foo bar]; [1 2]] | to html --partial",
result: Some(Value::test_string( result: Some(Value::test_string(
r#"<div style="background-color:white;color:black;"><table><tr><th>foo</th><th>bar</th></tr><tr><td>1</td><td>2</td></tr></table></div>"#, r#"<div style="background-color:white;color:black;"><table><thead><tr><th>foo</th><th>bar</th></tr></thead><tbody><tr><td>1</td><td>2</td></tr></tbody></table></div>"#,
)), )),
}, },
Example { Example {
description: "Optionally, output the string with a dark background", description: "Optionally, output the string with a dark background",
example: "[[foo bar]; [1 2]] | to html --dark", example: "[[foo bar]; [1 2]] | to html --dark",
result: Some(Value::test_string( result: Some(Value::test_string(
r#"<html><style>body { background-color:black;color:white; }</style><body><table><tr><th>foo</th><th>bar</th></tr><tr><td>1</td><td>2</td></tr></table></body></html>"#, r#"<html><style>body { background-color:black;color:white; }</style><body><table><thead><tr><th>foo</th><th>bar</th></tr></thead><tbody><tr><td>1</td><td>2</td></tr></tbody></table></body></html>"#,
)), )),
}, },
] ]
@ -360,13 +360,13 @@ fn html_table(table: Vec<Value>, headers: Vec<String>, config: &Config) -> Strin
output_string.push_str("<table>"); output_string.push_str("<table>");
output_string.push_str("<tr>"); output_string.push_str("<thead><tr>");
for header in &headers { for header in &headers {
output_string.push_str("<th>"); output_string.push_str("<th>");
output_string.push_str(&htmlescape::encode_minimal(header)); output_string.push_str(&htmlescape::encode_minimal(header));
output_string.push_str("</th>"); output_string.push_str("</th>");
} }
output_string.push_str("</tr>"); output_string.push_str("</tr></thead><tbody>");
for row in table { for row in table {
if let Value::Record { span, .. } = row { if let Value::Record { span, .. } = row {
@ -383,7 +383,7 @@ fn html_table(table: Vec<Value>, headers: Vec<String>, config: &Config) -> Strin
output_string.push_str("</tr>"); output_string.push_str("</tr>");
} }
} }
output_string.push_str("</table>"); output_string.push_str("</tbody></table>");
output_string output_string
} }

View File

@ -41,7 +41,7 @@ fn out_html_table() {
assert_eq!( assert_eq!(
actual.out, actual.out,
r"<html><style>body { background-color:white;color:black; }</style><body><table><tr><th>name</th></tr><tr><td>darren</td></tr></table></body></html>" r"<html><style>body { background-color:white;color:black; }</style><body><table><thead><tr><th>name</th></tr></thead><tbody><tr><td>darren</td></tr></tbody></table></body></html>"
); );
} }