File tree Expand file tree Collapse file tree 4 files changed +87
-1
lines changed
Expand file tree Collapse file tree 4 files changed +87
-1
lines changed Original file line number Diff line number Diff line change @@ -706,4 +706,21 @@ mod tests {
706706
707707 assert_yaml_snapshot ! ( examples) ;
708708 }
709+
710+ #[ test]
711+ fn inline_verbatim ( ) {
712+ let examples: Vec < _ > = [
713+ "some text `inline verbatim`" ,
714+ "`verbatim at start`" ,
715+ "{/ some_link.txt}[with `inline verbatim` in anchor]" ,
716+ "`*markup* /inside/ /-verbatim-/`" ,
717+ ]
718+ . into_iter ( )
719+ . map ( |example| example. to_string ( ) + "\n " )
720+ . map ( |str| parse ( & str) )
721+ . try_collect ( )
722+ . unwrap ( ) ;
723+
724+ assert_yaml_snapshot ! ( examples) ;
725+ }
709726}
Original file line number Diff line number Diff line change 1+ -- -
2+ source : src / lib .rs
3+ assertion_line : 588
4+ expression : examples
5+ -- -
6+ - - Paragraph :
7+ - Token :
8+ Text : some
9+ - Token : Whitespace
10+ - Token :
11+ Text : text
12+ - Token : Whitespace
13+ - InlineVerbatim :
14+ - Text : inline
15+ - Whitespace
16+ - Text : verbatim
17+ - - Paragraph :
18+ - InlineVerbatim :
19+ - Text : verbatim
20+ - Whitespace
21+ - Text : at
22+ - Whitespace
23+ - Text : start
24+ - - Paragraph :
25+ - Link :
26+ filepath : ~
27+ targets :
28+ - Path : some_link .txt
29+ description :
30+ - Token :
31+ Text : with
32+ - Token : Whitespace
33+ - InlineVerbatim :
34+ - Text : inline
35+ - Whitespace
36+ - Text : verbatim
37+ - Token : Whitespace
38+ - Token :
39+ Text : in
40+ - Token : Whitespace
41+ - Token :
42+ Text : anchor
43+ - - Paragraph :
44+ - InlineVerbatim :
45+ - Special : " *"
46+ - Text : markup
47+ - Special : " *"
48+ - Whitespace
49+ - Special : /
50+ - Text : inside
51+ - Special : /
52+ - Whitespace
53+ - Special : /
54+ - Special : " -"
55+ - Text : verbatim
56+ - Special : " -"
57+ - Special : /
Original file line number Diff line number Diff line change @@ -44,7 +44,7 @@ impl From<NorgToken> for String {
4444}
4545
4646/// A list of characters which are considered "special", i.e. for parsing of attached modifiers.
47- const SPECIAL_CHARS : & str = "*-~/_!%^,\" '$:@|=.#+<>()[]{}\\ " ;
47+ const SPECIAL_CHARS : & str = "*-~/_!%^,\" '` $:@|=.#+<>()[]{}\\ " ;
4848
4949/// Parses a `.norg` document and breaks it up into tokens.
5050pub fn stage_1 ( ) -> impl Parser < char , Vec < NorgToken > , Error = chumsky:: error:: Simple < char > > {
Original file line number Diff line number Diff line change @@ -133,6 +133,16 @@ fn paragraph_parser_opener_candidates_and_links() -> impl Parser<
133133 ParagraphSegment :: AttachedModifierOpener ( ( None , modifiers, right) )
134134 } ) ;
135135
136+ let inline_verbatim = just ( ParagraphSegmentToken :: Special ( '`' ) )
137+ . ignore_then (
138+ just ( ParagraphSegmentToken :: Special ( '`' ) )
139+ . not ( )
140+ . repeated ( )
141+ . at_least ( 1 ) ,
142+ )
143+ . then_ignore ( just ( ParagraphSegmentToken :: Special ( '`' ) ) )
144+ . map ( |content| ParagraphSegment :: InlineVerbatim ( content) ) ;
145+
136146 let anchor = just ( ParagraphSegmentToken :: Special ( '[' ) )
137147 . ignore_then (
138148 just ( ParagraphSegmentToken :: Special ( ']' ) )
@@ -230,6 +240,7 @@ fn paragraph_parser_opener_candidates_and_links() -> impl Parser<
230240 content : parse_paragraph ( content) . unwrap ( ) ,
231241 target : Box :: new ( link) ,
232242 } ) ,
243+ inline_verbatim,
233244 anchor
234245 . clone ( )
235246 . then ( anchor. clone ( ) . or_not ( ) )
@@ -472,6 +483,7 @@ pub enum ParagraphSegment {
472483 description : Option < Vec < ParagraphSegment > > ,
473484 } ,
474485 InlineLinkTarget ( Vec < ParagraphSegment > ) ,
486+ InlineVerbatim ( Vec < ParagraphSegmentToken > ) ,
475487}
476488
477489fn parse_paragraph (
You can’t perform that action at this time.
0 commit comments