sevenmark_parser/parser/
document.rs1use crate::ast::Element;
2use crate::parser::ParserInput;
3use crate::parser::brace::brace_redirect_parser;
4use crate::parser::element::element_parser;
5use winnow::Result;
6use winnow::combinator::repeat;
7use winnow::prelude::*;
8
9pub fn document_parser(parser_input: &mut ParserInput) -> Result<Vec<Element>> {
12 if let Ok(redirect_element) = brace_redirect_parser(parser_input) {
14 return Ok(vec![redirect_element]);
15 }
16
17 repeat(0.., element_parser)
19 .map(|elements: Vec<_>| elements.into_iter().flatten().collect())
20 .parse_next(parser_input)
21}