markdown-ppp 2.9.2

Feature-rich Markdown Parsing and Pretty-Printing library
Documentation
use crate::parser::util::*;
use crate::parser::MarkdownParserState;
use nom::{
    branch::alt,
    character::complete::{char, space0},
    combinator::map,
    multi::{many, many_m_n},
    sequence::{preceded, terminated},
    IResult, Parser,
};
use std::rc::Rc;

pub(crate) fn thematic_break<'a>(
    _state: Rc<MarkdownParserState>,
) -> impl FnMut(&'a str) -> IResult<&'a str, ()> {
    move |input: &str| {
        map(
            line_terminated(preceded(
                many_m_n(0, 3, char(' ')),
                terminated(
                    alt((
                        many(3.., char('-')),
                        many(3.., char('_')),
                        many(3.., char('*')),
                    )),
                    space0,
                ),
            )),
            |_: Vec<_>| (),
        )
        .parse(input)
    }
}