@@ -47,18 +47,32 @@ impl Commands {
47
47
state = add_space ( & mut self . state_machine , state, i) ;
48
48
state = add_quoted_dynamic_segment ( & mut self . state_machine , state) ;
49
49
param_names. push ( & segment[ 1 ..segment. len ( ) - 1 ] ) ;
50
+
51
+ } else if segment. starts_with ( "```rust\n " ) && segment. ends_with ( "\n ```" ) {
52
+ state = add_space ( & mut self . state_machine , state, i) ;
53
+ state = add_code_segment1 ( & mut self . state_machine , state) ;
54
+ param_names. push ( & segment[ 8 ..segment. len ( ) - 4 ] ) ;
55
+
50
56
} else if segment. starts_with ( "```" ) && segment. ends_with ( "```" ) {
51
57
state = add_space ( & mut self . state_machine , state, i) ;
52
- state = add_triple_tick_code_segment ( & mut self . state_machine , state) ;
58
+ state = add_code_segment2 ( & mut self . state_machine , state) ;
53
59
param_names. push ( & segment[ 3 ..segment. len ( ) - 3 ] ) ;
60
+
61
+ } else if segment. starts_with ( "`" ) && segment. ends_with ( "`" ) {
62
+ state = add_space ( & mut self . state_machine , state, i) ;
63
+ state = add_code_segment3 ( & mut self . state_machine , state) ;
64
+ param_names. push ( & segment[ 1 ..segment. len ( ) - 1 ] ) ;
65
+
54
66
} else if segment. starts_with ( "{" ) && segment. ends_with ( "}" ) {
55
67
state = add_space ( & mut self . state_machine , state, i) ;
56
68
state = add_dynamic_segment ( & mut self . state_machine , state) ;
57
69
param_names. push ( & segment[ 1 ..segment. len ( ) - 1 ] ) ;
70
+
58
71
} else if segment. ends_with ( "..." ) {
59
72
state = add_space ( & mut self . state_machine , state, i) ;
60
73
state = add_remaining_segment ( & mut self . state_machine , state) ;
61
74
param_names. push ( & segment[ ..segment. len ( ) - 3 ] ) ;
75
+
62
76
} else {
63
77
state = add_space ( & mut self . state_machine , state, i) ;
64
78
segment. chars ( ) . for_each ( |ch| {
@@ -145,7 +159,30 @@ fn add_quoted_dynamic_segment(state_machine: &mut StateMachine, mut state: usize
145
159
}
146
160
147
161
#[ inline]
148
- fn add_triple_tick_code_segment ( state_machine : & mut StateMachine , mut state : usize ) -> usize {
162
+ fn add_code_segment1 ( state_machine : & mut StateMachine , mut state : usize ) -> usize {
163
+ state = state_machine. add ( state, CharacterSet :: from_char ( '`' ) ) ;
164
+ state = state_machine. add ( state, CharacterSet :: from_char ( '`' ) ) ;
165
+ state = state_machine. add ( state, CharacterSet :: from_char ( '`' ) ) ;
166
+ state = state_machine. add ( state, CharacterSet :: from_char ( 'r' ) ) ;
167
+ state = state_machine. add ( state, CharacterSet :: from_char ( 'u' ) ) ;
168
+ state = state_machine. add ( state, CharacterSet :: from_char ( 's' ) ) ;
169
+ state = state_machine. add ( state, CharacterSet :: from_char ( 't' ) ) ;
170
+ state = state_machine. add ( state, CharacterSet :: from_char ( '\n' ) ) ;
171
+ state = state_machine. add ( state, CharacterSet :: any ( ) ) ;
172
+ state_machine. add_next_state ( state, state) ;
173
+ state_machine. start_parse ( state) ;
174
+ state_machine. end_parse ( state) ;
175
+ state = state_machine. add ( state, CharacterSet :: from_char ( '\n' ) ) ;
176
+ state = state_machine. add ( state, CharacterSet :: from_char ( '`' ) ) ;
177
+ state = state_machine. add ( state, CharacterSet :: from_char ( '`' ) ) ;
178
+ state = state_machine. add ( state, CharacterSet :: from_char ( '`' ) ) ;
179
+
180
+ state
181
+ }
182
+
183
+
184
+ #[ inline]
185
+ fn add_code_segment2 ( state_machine : & mut StateMachine , mut state : usize ) -> usize {
149
186
state = state_machine. add ( state, CharacterSet :: from_char ( '`' ) ) ;
150
187
state = state_machine. add ( state, CharacterSet :: from_char ( '`' ) ) ;
151
188
state = state_machine. add ( state, CharacterSet :: from_char ( '`' ) ) ;
@@ -159,3 +196,15 @@ fn add_triple_tick_code_segment(state_machine: &mut StateMachine, mut state: usi
159
196
160
197
state
161
198
}
199
+
200
+ #[ inline]
201
+ fn add_code_segment3 ( state_machine : & mut StateMachine , mut state : usize ) -> usize {
202
+ state = state_machine. add ( state, CharacterSet :: from_char ( '`' ) ) ;
203
+ state = state_machine. add ( state, CharacterSet :: any ( ) ) ;
204
+ state_machine. add_next_state ( state, state) ;
205
+ state_machine. start_parse ( state) ;
206
+ state_machine. end_parse ( state) ;
207
+ state = state_machine. add ( state, CharacterSet :: from_char ( '`' ) ) ;
208
+
209
+ state
210
+ }
0 commit comments