sem-reg 0.1.1

Handle certain Windows registry binary values semantically. Extensible.
Documentation
use std::fmt;

pub fn write_table<'a>(
    formatter: &mut fmt::Formatter<'_>,
    lines: &[Option<(&'a str, String)>],
) -> fmt::Result {
    const MIN_DOTS: usize = 2;
    let left_col_width = lines
        .iter()
        .map(|line| {
            if let Some((name, _)) = line {
                name.len()
            } else {
                0
            }
        })
        .max()
        .unwrap_or(0)
        + MIN_DOTS;

    let mut iter = lines.iter().peekable();
    while let Some(line) = iter.next() {
        let newline_suffix = if iter.peek().is_some() { "\n" } else { "" };
        if let Some((name, value)) = line {
            let dot_padding = ".".repeat(left_col_width - name.len());
            write!(formatter, "{name} {dot_padding} {value}{newline_suffix}")?;
        } else {
            write!(formatter, "{newline_suffix}")?;
        }
    }

    Ok(())
}