]> git.scottworley.com Git - tablify/blobdiff - src/lib.rs
Start on 0.5.1
[tablify] / src / lib.rs
index 84cb336301e83f47b6e13bf4b484c41dca1322b5..d85de02dda58b9cbbe1d077d5bd485851d255946 100644 (file)
@@ -315,14 +315,21 @@ fn render_cell(col: &str, row: &mut Row) -> HTML {
     let row_label = HTML::escape(row.label.as_ref());
     let col_label = HTML::escape(col);
     let instances: Option<&Vec<Option<String>>> = row.entries.get(col);
     let row_label = HTML::escape(row.label.as_ref());
     let col_label = HTML::escape(col);
     let instances: Option<&Vec<Option<String>>> = row.entries.get(col);
-    let class = HTML::from(if instances.is_none() { "" } else { "yes" });
+    let is_empty = match instances {
+        None => true,
+        Some(is) => is.iter().all(|ins| match ins {
+            None => false,
+            Some(content) => content == "×",
+        }),
+    };
+    let class = HTML::from(if is_empty { "" } else { r#" class="yes""# });
     let contents = match instances {
         None => HTML::from(""),
         Some(is) => render_instances(is),
     };
     row.entries.remove(col);
     HTML(format!(
     let contents = match instances {
         None => HTML::from(""),
         Some(is) => render_instances(is),
     };
     row.entries.remove(col);
     HTML(format!(
-        r#"<td class="{class}" onmouseover="h2('{row_label}','{col_label}')" onmouseout="ch2('{row_label}','{col_label}')">{contents}</td>"#
+        r#"<td{class} onmouseover="h2('{row_label}','{col_label}')" onmouseout="ch2('{row_label}','{col_label}')">{contents}</td>"#
     ))
 }
 
     ))
 }
 
@@ -690,7 +697,7 @@ mod tests {
                 }
             ),
             HTML::from(
                 }
             ),
             HTML::from(
-                r#"<td class="" onmouseover="h2('nope','foo')" onmouseout="ch2('nope','foo')"></td>"#
+                r#"<td onmouseover="h2('nope','foo')" onmouseout="ch2('nope','foo')"></td>"#
             )
         );
         assert_eq!(
             )
         );
         assert_eq!(
@@ -702,7 +709,7 @@ mod tests {
                 }
             ),
             HTML::from(
                 }
             ),
             HTML::from(
-                r#"<td class="" onmouseover="h2('nope','foo')" onmouseout="ch2('nope','foo')"></td>"#
+                r#"<td onmouseover="h2('nope','foo')" onmouseout="ch2('nope','foo')"></td>"#
             )
         );
         assert_eq!(
             )
         );
         assert_eq!(
@@ -756,6 +763,18 @@ mod tests {
                 r#"<td class="yes" onmouseover="h2('nope','foo')" onmouseout="ch2('nope','foo')">5 𝍷</td>"#
             )
         );
                 r#"<td class="yes" onmouseover="h2('nope','foo')" onmouseout="ch2('nope','foo')">5 𝍷</td>"#
             )
         );
+        assert_eq!(
+            render_cell(
+                "foo",
+                &mut Row {
+                    label: "nope".to_owned(),
+                    entries: HashMap::from([("foo".to_owned(), vec![Some("×".to_owned())])]),
+                }
+            ),
+            HTML::from(
+                r#"<td onmouseover="h2('nope','foo')" onmouseout="ch2('nope','foo')">×</td>"#
+            )
+        );
         assert_eq!(
             render_cell(
                 "heart",
         assert_eq!(
             render_cell(
                 "heart",
@@ -863,7 +882,7 @@ mod tests {
                 })
             ),
             HTML::from(
                 })
             ),
             HTML::from(
-                r#"<tr><th id="nope">nope</th><td class="" onmouseover="h2('nope','foo')" onmouseout="ch2('nope','foo')"></td><td class="leftover" onmouseover="highlight('nope')" onmouseout="clear_highlight('nope')">bar</td></tr>
+                r#"<tr><th id="nope">nope</th><td onmouseover="h2('nope','foo')" onmouseout="ch2('nope','foo')"></td><td class="leftover" onmouseover="highlight('nope')" onmouseout="clear_highlight('nope')">bar</td></tr>
 "#
             )
         );
 "#
             )
         );