From 62e5499150af15fdd9b9bc930c0c07ad5db3c50f Mon Sep 17 00:00:00 2001 From: Tom Alexander Date: Sun, 18 Dec 2022 06:31:40 -0500 Subject: [PATCH] Add parsers for most of the rest of item. --- src/parser/plain_list.rs | 29 +++++++++++++++++++++++++++++ 1 file changed, 29 insertions(+) diff --git a/src/parser/plain_list.rs b/src/parser/plain_list.rs index 5fa0fb0..4d026e5 100644 --- a/src/parser/plain_list.rs +++ b/src/parser/plain_list.rs @@ -1,8 +1,12 @@ use nom::branch::alt; use nom::bytes::complete::tag; +use nom::character::complete::anychar; use nom::character::complete::digit1; +use nom::character::complete::line_ending; use nom::character::complete::one_of; +use nom::combinator::not; use nom::combinator::recognize; +use nom::multi::many1; use nom::sequence::tuple; use super::error::Res; @@ -32,3 +36,28 @@ fn bullet<'s>(i: &'s str) -> Res<&'s str, &'s str> { recognize(tuple((counter, alt((tag("."), tag(")")))))), ))(i) } + +fn counter_set<'s>(i: &'s str) -> Res<&'s str, &'s str> { + recognize(tuple((tag("[@"), counter, tag("]"))))(i) +} + +fn check_box<'s>(i: &'s str) -> Res<&'s str, &'s str> { + recognize(alt((tag("[ ]"), tag("[X]"), tag("[-]"))))(i) +} + +fn item_tag<'s>(i: &'s str) -> Res<&'s str, &'s str> { + recognize(tuple((tag_text, tag_separator)))(i) +} + +fn tag_text<'s>(i: &'s str) -> Res<&'s str, &'s str> { + recognize(many1(tag_text_character))(i) +} + +fn tag_text_character<'s>(i: &'s str) -> Res<&'s str, &'s str> { + not(alt((tag_separator, line_ending)))(i)?; + recognize(anychar)(i) +} + +fn tag_separator<'s>(i: &'s str) -> Res<&'s str, &'s str> { + tag(" :: ")(i) +}