wayver's git archive


an obsidian renderer
git clone https://git.wayver.dev/sable

sable-markdown/src/parser/blocks/tests/custom_parser.rs@337ba67f65eaa17b44e371af7c0f0c761d6aa914

raw
Date Commit Message Author Files + -
2026-02-23 01:55 initial mvp wayverd 139 17808 0
...

1use crate::ast::*;
2use crate::parser::{parse_markdown, MarkdownParserState};
3use nom::combinator::value;
4use std::cell::RefCell;
5use std::rc::Rc;
6
7#[test]
8fn custom_parser1() {
9    use nom::Parser;
10    let config = crate::parser::config::MarkdownParserConfig::default().with_custom_block_parser(
11        Rc::new(RefCell::new(Box::new(|input: &str| {
12            value(vec![Block::ThematicBreak], nom::bytes::complete::tag("///")).parse(input)
13        }))),
14    );
15    let doc = parse_markdown(MarkdownParserState::with_config(config), "///\ntext\n===").unwrap();
16    assert_eq!(
17        doc,
18        Document {
19            blocks: vec![
20                Block::ThematicBreak,
21                Block::Heading(Heading {
22                    kind: HeadingKind::Setext(SetextHeading::Level1),
23                    content: vec![Inline::Text("text".to_owned())]
24                })
25            ]
26        }
27    );
28}
29