1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46
mod closed_heading; mod comment; mod open_heading; use crate::{Result, Span}; use closed_heading::closed_heading; use comment::comment; use nom::branch::alt; use open_heading::open_heading; #[derive(Debug, PartialEq)] pub enum SinglelineBlock { OpenHeading(Vec<Span>, HeadingLevel), ClosedHeading(Vec<Span>, HeadingLevel), Comment(String), } #[derive(Debug, PartialEq)] pub enum HeadingLevel { One, Two, Three, Four, Five, Six, } impl From<usize> for HeadingLevel { fn from(source: usize) -> HeadingLevel { use HeadingLevel::*; match source { 1 => One, 2 => Two, 3 => Three, 4 => Four, 5 => Five, 6 => Six, _ => std::unreachable!(), } } } pub(crate) fn singleline_block(input: &str) -> Result<SinglelineBlock> { alt((open_heading, closed_heading, comment))(input) }