m2 0.0.0

Set of Unix tools to work with m2dirs
Documentation
use pulldown_cmark::{Event, Options, Parser, Tag, TagEnd};

pub fn generate_html(text: String) -> String {
    let (content, signature) = match text.rsplit_once("\r\n-- \r\n") {
        Some((content, signature)) => (content, Some(signature)),
        None => (text.as_str(), None),
    };

    let mut html = String::new();
    html.push_str(r#"<!doctype html><html><head><meta charset="utf-8"></head><body>"#);

    pulldown_cmark::html::push_html(
        &mut html,
        Parser::new_ext(content, Options::ENABLE_SMART_PUNCTUATION),
    );

    if let Some(signature) = signature {
        html.push_str("-- <br>");

        pulldown_cmark::html::push_html(
            &mut html,
            Parser::new_ext(signature, Options::ENABLE_SMART_PUNCTUATION).filter_map(|event| {
                match event {
                    Event::SoftBreak => Some(Event::HardBreak),
                    Event::Start(Tag::Paragraph) | Event::End(TagEnd::Paragraph) => None,
                    _ => Some(event),
                }
            }),
        );
    }

    html.push_str("</body></html>");
    html
}