]> git.scottworley.com Git - tablify/blobdiff - src/lib.rs
Refactor: Collect to Vec and join(" ")
[tablify] / src / lib.rs
index 30026929c3993ea004d726e2c0ceffcbc44957ce..e636bb23a1596b3cdecfaad5228ff3323f6de5a1 100644 (file)
@@ -9,6 +9,7 @@ const HEADER: &str = "<!DOCTYPE html>
   <meta charset=\"utf-8\">
   <meta name=\"viewport\" content=\"width=device-width, initial-scale=1\">
   <style>
   <meta charset=\"utf-8\">
   <meta name=\"viewport\" content=\"width=device-width, initial-scale=1\">
   <style>
+    td { text-align: center; }
     /* h/t https://wabain.github.io/2019/10/13/css-rotated-table-header.html */
     th, td { white-space: nowrap; }
     th { text-align: left; font-weight: normal; }
     /* h/t https://wabain.github.io/2019/10/13/css-rotated-table-header.html */
     th, td { white-space: nowrap; }
     th { text-align: left; font-weight: normal; }
@@ -137,7 +138,7 @@ fn column_counts(rows: &[RowInput]) -> Vec<(usize, String)> {
         .into_iter()
         .map(|(col, n)| (n, col))
         .collect();
         .into_iter()
         .map(|(col, n)| (n, col))
         .collect();
-    counts.sort();
+    counts.sort_unstable_by(|(an, acol), (bn, bcol)| bn.cmp(an).then(acol.cmp(bcol)));
     counts
 }
 fn column_order(rows: &[RowInput]) -> Vec<String> {
     counts
 }
 fn column_order(rows: &[RowInput]) -> Vec<String> {
@@ -149,8 +150,8 @@ fn column_order(rows: &[RowInput]) -> Vec<String> {
 
 fn render_instance(entry: &Entry) -> String {
     match &entry.instance {
 
 fn render_instance(entry: &Entry) -> String {
     match &entry.instance {
-        None => String::from("✓ "),
-        Some(instance) => String::from(instance) + " ",
+        None => String::from("✓"),
+        Some(instance) => String::from(instance),
     }
 }
 
     }
 }
 
@@ -168,9 +169,10 @@ fn render_cell(col: &str, row: &RowInput) -> String {
         entries
             .iter()
             .map(|i| render_instance(i))
         entries
             .iter()
             .map(|i| render_instance(i))
-            .collect::<String>()
+            .collect::<Vec<_>>()
+            .join(" ")
     };
     };
-    format!("<td class=\"{class}\" onmouseover=\"h2('{row_label}','{col}')\" onmouseout=\"ch2('{row_label}','{col}')\">{}</td>", contents.trim())
+    format!("<td class=\"{class}\" onmouseover=\"h2('{row_label}','{col}')\" onmouseout=\"ch2('{row_label}','{col}')\">{contents}</td>")
 }
 
 fn render_row(columns: &[String], row: &RowInput) -> String {
 }
 
 fn render_row(columns: &[String], row: &RowInput) -> String {
@@ -353,7 +355,7 @@ mod tests {
                     .collect::<Result<Vec<_>, _>>()
                     .unwrap()
             ),
                     .collect::<Result<Vec<_>, _>>()
                     .unwrap()
             ),
-            vec![(1, String::from("bar")), (2, String::from("baz"))]
+            vec![(2, String::from("baz")), (1, String::from("bar"))]
         );
         assert_eq!(
             column_counts(
         );
         assert_eq!(
             column_counts(
@@ -361,7 +363,7 @@ mod tests {
                     .collect::<Result<Vec<_>, _>>()
                     .unwrap()
             ),
                     .collect::<Result<Vec<_>, _>>()
                     .unwrap()
             ),
-            vec![(1, String::from("bar")), (2, String::from("baz"))]
+            vec![(2, String::from("baz")), (1, String::from("bar"))]
         );
         assert_eq!(
             column_counts(
         );
         assert_eq!(
             column_counts(
@@ -369,7 +371,7 @@ mod tests {
                     .collect::<Result<Vec<_>, _>>()
                     .unwrap()
             ),
                     .collect::<Result<Vec<_>, _>>()
                     .unwrap()
             ),
-            vec![(1, String::from("bar")), (2, String::from("baz"))]
+            vec![(2, String::from("baz")), (1, String::from("bar"))]
         );
     }
 
         );
     }