simple-markdown-parser 0.0.7

A simple library for handling markdown. May include extra utilities
Documentation
fn main() -> Result<(), Box<dyn std::error::Error>> {
    let mut args: std::collections::VecDeque<_> = std::env::args().skip(1).collect();
    let path = args.pop_front().ok_or("expected argument")?;
    let content = std::fs::read_to_string(path)?;

    fn handler(item: simple_markdown_parser::MarkdownElement) {
        if let simple_markdown_parser::MarkdownElement::CommandBlock(block) = item {
            eprintln!(
                "MarkdownElement::CommandBlock {{ name: {name:?}, arguments: {arguments:?} }} [",
                name = block.name,
                arguments = block.arguments()
            );
            let _ = simple_markdown_parser::parse(&block.inner.0, handler);
            eprintln!("] End of {name:?}", name = block.name);
            return;
        } else {
            if let Some(parts) = item.parts_like() {
                eprint!("{} -> ", item.debug_without_text());
                eprintln!(
                    "parts={inner:?}",
                    inner = parts
                        .parts()
                        .flat_map(|part| match part {
                            simple_markdown_parser::MarkdownTextElement::Link { on, .. } => {
                                on.parts().collect::<Vec<_>>()
                            }
                            part => vec![part],
                        })
                        .collect::<Vec<_>>()
                );
            } else {
                eprintln!("{:?}", item);
            }
        }
    }

    let _ = simple_markdown_parser::parse(&content, handler);

    eprintln!("finished");

    Ok(())
}