wayver's git archive


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

sable-markdown/src/parser/mod.rs@337ba67f65eaa17b44e371af7c0f0c761d6aa914

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

1mod blocks;
2mod inline;
3mod link_util;
4mod util;
5
6use nom::{
7    Parser,
8    branch::alt,
9    character::complete::{line_ending, space1},
10    combinator::eof,
11    multi::many0,
12    sequence::terminated,
13};
14
15use crate::ast::Document;
16
17/// Parse the given Markdown string into an AST.
18pub fn parse_markdown(input: &str) -> Result<Document, nom::Err<nom::error::Error<&str>>> {
19    let empty_lines = many0(alt((space1, line_ending)));
20    let mut parser = terminated(many0(crate::parser::blocks::block()), (empty_lines, eof));
21    let (_, blocks) = parser.parse(input)?;
22
23    let blocks = blocks.into_iter().flatten().collect();
24
25    Ok(Document { blocks })
26}
27