diff --git a/org_mode_samples/text_markup/deep_nesting.org b/org_mode_samples/text_markup/deep_nesting.org new file mode 100644 index 0000000..64ee871 --- /dev/null +++ b/org_mode_samples/text_markup/deep_nesting.org @@ -0,0 +1,3 @@ +foo *bar /baz *lorem* ipsum/ dolar* alpha + +foo *bar /baz _lorem_ ipsum/ dolar* alpha diff --git a/src/parser/text_markup.rs b/src/parser/text_markup.rs index 18cb60b..3d6181c 100644 --- a/src/parser/text_markup.rs +++ b/src/parser/text_markup.rs @@ -131,6 +131,12 @@ fn _text_markup_object<'r, 's, 'x>( |(children, _exit_contents)| !children.is_empty(), )(remaining)?; + if exit_matcher_parser(context, remaining).is_ok() { + return Err(nom::Err::Error(CustomError::MyError(MyError( + "Parent exit matcher is triggering.", + )))); + } + // TODO: Sometimes its plain text, not objects let (remaining, _close) = text_markup_end_specialized(context, remaining)?; let (remaining, _trailing_whitespace) = space0(remaining)?; @@ -168,6 +174,12 @@ fn _text_markup_string<'r, 's, 'x>( |(children, _exit_contents)| !children.is_empty(), ))(remaining)?; + if exit_matcher_parser(context, remaining).is_ok() { + return Err(nom::Err::Error(CustomError::MyError(MyError( + "Parent exit matcher is triggering.", + )))); + } + // TODO: Sometimes its plain text, not objects let (remaining, _close) = text_markup_end_specialized(context, remaining)?; let (remaining, _trailing_whitespace) = space0(remaining)?; diff --git a/toy_language.txt b/toy_language.txt index fc07a3b..b9372be 100644 --- a/toy_language.txt +++ b/toy_language.txt @@ -1,13 +1 @@ -prologue *goes here* I guess *bold -text* - -bold*wont* start *or stop*when there is text outside it - -I guess *regular - -text* - -[[foo][foo *bar]] baz* car - - *nesting *bold entrances* and* exits