sevenmark_parser/parser/markdown/
markdown_hline.rs1use crate::ast::{Element, HLineElement, Span};
2use crate::parser::ParserInput;
3use winnow::Result;
4use winnow::ascii::line_ending;
5use winnow::combinator::eof;
6use winnow::combinator::{alt, terminated};
7use winnow::prelude::*;
8use winnow::stream::Location as StreamLocation;
9use winnow::token::take_while;
10
11pub fn markdown_hline_parser(parser_input: &mut ParserInput) -> Result<Element> {
12 let start = parser_input.current_token_start();
13 terminated(take_while(3..=9, '-'), alt((line_ending, eof))).parse_next(parser_input)?;
14 let end = parser_input.previous_token_end();
15
16 Ok(Element::HLine(HLineElement {
17 span: Span { start, end },
18 }))
19}