Commit 055d113 1 parent 21f83af commit 055d113 Copy full SHA for 055d113
File tree 4 files changed +87
-1
lines changed
4 files changed +87
-1
lines changed Original file line number Diff line number Diff line change @@ -706,4 +706,21 @@ mod tests {
706
706
707
707
assert_yaml_snapshot ! ( examples) ;
708
708
}
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
+ }
709
726
}
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 {
44
44
}
45
45
46
46
/// 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 = "*-~/_!%^,\" '` $:@|=.#+<>()[]{}\\ " ;
48
48
49
49
/// Parses a `.norg` document and breaks it up into tokens.
50
50
pub 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<
133
133
ParagraphSegment :: AttachedModifierOpener ( ( None , modifiers, right) )
134
134
} ) ;
135
135
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
+
136
146
let anchor = just ( ParagraphSegmentToken :: Special ( '[' ) )
137
147
. ignore_then (
138
148
just ( ParagraphSegmentToken :: Special ( ']' ) )
@@ -230,6 +240,7 @@ fn paragraph_parser_opener_candidates_and_links() -> impl Parser<
230
240
content : parse_paragraph ( content) . unwrap ( ) ,
231
241
target : Box :: new ( link) ,
232
242
} ) ,
243
+ inline_verbatim,
233
244
anchor
234
245
. clone ( )
235
246
. then ( anchor. clone ( ) . or_not ( ) )
@@ -472,6 +483,7 @@ pub enum ParagraphSegment {
472
483
description : Option < Vec < ParagraphSegment > > ,
473
484
} ,
474
485
InlineLinkTarget ( Vec < ParagraphSegment > ) ,
486
+ InlineVerbatim ( Vec < ParagraphSegmentToken > ) ,
475
487
}
476
488
477
489
fn parse_paragraph (
You can’t perform that action at this time.
0 commit comments