]> git.scottworley.com Git - tablify/blobdiff - src/lib.rs
Factor out column_header_order()
[tablify] / src / lib.rs
index 2111e1ed798d3c4ce31582999baf8b141f8ef667..0873f2e346f9ac79c1cd0363b795c01ab193aead 100644 (file)
@@ -359,31 +359,34 @@ fn render_row(config: &Config, columns: &[String], rowlike: &mut Rowlike) -> HTM
     }
 }
 
-fn render_column_headers(config: &Config, columns: &[String]) -> HTML {
+fn column_header_order<'a>(
+    config: &'a Config,
+    columns: &'a [String],
+) -> impl Iterator<Item = Option<&'a String>> {
     let static_columns = config.static_columns.iter().map(|oc| oc.as_ref());
     let dynamic_columns = columns.iter().map(Some);
+    static_columns.chain(dynamic_columns).filter(|ocol| {
+        ocol.map_or(true, |col| !config.hidden_columns.contains(col))
+    })
+}
+
+fn render_column_headers(config: &Config, columns: &[String]) -> HTML {
     HTML(
         String::from(r#"<tr class="key"><th></th>"#)
-            + &static_columns
-                .chain(dynamic_columns)
-                .filter(|ocol| {
-                    ocol.map(|col| !config.hidden_columns.contains(col))
-                        .unwrap_or(true)
-                })
-                .fold(String::new(), |mut acc, ocol| {
-                    match ocol {
-                        Some(col) => {
-                            let col_header = HTML::escape(col);
-                            write!(
-                                &mut acc,
-                                r#"<th id="{col_header}"><div><div>{col_header}</div></div></th>"#
-                            )
-                        }
-                        None => write!(&mut acc, r#"<th class="col_spacer"></th>"#),
+            + &column_header_order(config, columns).fold(String::new(), |mut acc, ocol| {
+                match ocol {
+                    Some(col) => {
+                        let col_header = HTML::escape(col);
+                        write!(
+                            &mut acc,
+                            r#"<th id="{col_header}"><div><div>{col_header}</div></div></th>"#
+                        )
                     }
-                    .unwrap();
-                    acc
-                })
+                    None => write!(&mut acc, r#"<th class="col_spacer"></th>"#),
+                }
+                .unwrap();
+                acc
+            })
             + "</tr>\n",
     )
 }