htmf 0.2.0

hypertext markup functions: functions for generating HTML
Documentation
use std::fmt::Write;

use crate::escape;

#[derive(PartialEq, Eq, Debug, Clone)]
pub struct Attr(pub(crate) &'static str, pub(crate) String);

#[derive(PartialEq, Eq, Debug, Clone)]
pub struct Attrs(pub(crate) Vec<Attr>);

impl std::fmt::Display for Attrs {
    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
        for (i, Attr(k, v)) in self.0.iter().enumerate() {
            escape::write_escaped_html(f, k);
            f.write_char('=')?;
            f.write_char('"')?;
            escape::write_escaped_html(f, v);
            f.write_char('"')?;

            if i < self.0.len() - 1 {
                f.write_char(' ')?;
            }
        }

        std::fmt::Result::Ok(())
    }
}