markdown-ppp 2.9.2

Feature-rich Markdown Parsing and Pretty-Printing library
Documentation
use crate::ast::*;
use crate::parser::{parse_markdown, MarkdownParserConfig, MarkdownParserState};

#[test]
fn heading_v1() {
    let doc = parse_markdown(MarkdownParserState::default(), "## a").unwrap();
    assert_eq!(
        doc,
        Document {
            blocks: vec![Block::Heading(Heading {
                kind: HeadingKind::Atx(2),
                content: vec![Inline::Text("a".to_owned())]
            })]
        }
    );

    let doc = parse_markdown(MarkdownParserState::default(), "##a").unwrap();
    assert_eq!(
        doc,
        Document {
            blocks: vec![Block::Paragraph(vec![Inline::Text("##a".to_string())])]
        }
    );

    let config = MarkdownParserConfig::default().with_allow_no_space_in_headings();
    let doc = parse_markdown(MarkdownParserState::with_config(config), "##a").unwrap();
    assert_eq!(
        doc,
        Document {
            blocks: vec![Block::Heading(Heading {
                kind: HeadingKind::Atx(2),
                content: vec![Inline::Text("a".to_owned())]
            })]
        }
    );
}

#[test]
fn heading_v2() {
    let doc = parse_markdown(MarkdownParserState::default(), "a\n==").unwrap();
    assert_eq!(
        doc,
        Document {
            blocks: vec![Block::Heading(Heading {
                kind: HeadingKind::Setext(SetextHeading::Level1),
                content: vec![Inline::Text("a".to_owned())]
            })]
        }
    );

    let doc = parse_markdown(MarkdownParserState::default(), "a\n--").unwrap();
    assert_eq!(
        doc,
        Document {
            blocks: vec![Block::Heading(Heading {
                kind: HeadingKind::Setext(SetextHeading::Level2),
                content: vec![Inline::Text("a".to_owned())]
            })]
        }
    );
}