Implement document parser.
This commit is contained in:
parent
7ab3df6938
commit
f2d16d302a
@ -5,6 +5,7 @@ use nom::character::complete::space1;
|
|||||||
use nom::combinator::eof;
|
use nom::combinator::eof;
|
||||||
use nom::combinator::map;
|
use nom::combinator::map;
|
||||||
use nom::combinator::not;
|
use nom::combinator::not;
|
||||||
|
use nom::combinator::opt;
|
||||||
use nom::combinator::recognize;
|
use nom::combinator::recognize;
|
||||||
use nom::combinator::verify;
|
use nom::combinator::verify;
|
||||||
use nom::multi::many0;
|
use nom::multi::many0;
|
||||||
@ -74,8 +75,19 @@ pub fn document(input: &str) -> Res<&str, Document> {
|
|||||||
let initial_context: ContextTree<'_, '_> = ContextTree::new();
|
let initial_context: ContextTree<'_, '_> = ContextTree::new();
|
||||||
let document_context =
|
let document_context =
|
||||||
initial_context.with_additional_node(ContextElement::DocumentRoot(input));
|
initial_context.with_additional_node(ContextElement::DocumentRoot(input));
|
||||||
|
let section_matcher = parser_with_context!(section)(&document_context);
|
||||||
todo!()
|
let heading_matcher = parser_with_context!(heading)(&document_context);
|
||||||
|
let (remaining, zeroth_section) = opt(section_matcher)(input)?;
|
||||||
|
let (remaining, children) = many0(heading_matcher)(remaining)?;
|
||||||
|
let source = get_consumed(input, remaining);
|
||||||
|
Ok((
|
||||||
|
remaining,
|
||||||
|
Document {
|
||||||
|
source,
|
||||||
|
zeroth_section,
|
||||||
|
children,
|
||||||
|
},
|
||||||
|
))
|
||||||
}
|
}
|
||||||
|
|
||||||
fn section<'r, 's>(context: Context<'r, 's>, input: &'s str) -> Res<&'s str, Section<'s>> {
|
fn section<'r, 's>(context: Context<'r, 's>, input: &'s str) -> Res<&'s str, Section<'s>> {
|
||||||
@ -114,7 +126,7 @@ fn heading<'r, 's>(context: Context<'r, 's>, input: &'s str) -> Res<&'s str, Hea
|
|||||||
Ok((
|
Ok((
|
||||||
remaining,
|
remaining,
|
||||||
Heading {
|
Heading {
|
||||||
source: source,
|
source,
|
||||||
stars: star_count,
|
stars: star_count,
|
||||||
children,
|
children,
|
||||||
},
|
},
|
||||||
|
Loading…
Reference in New Issue
Block a user