@@ -43,25 +43,17 @@ impl Commands {
43
43
. filter ( |segment| segment. len ( ) > 0 )
44
44
. enumerate ( )
45
45
. for_each ( |( i, segment) | {
46
- if segment. starts_with ( "[ " ) && segment. ends_with ( "] " ) {
46
+ if segment. starts_with ( "``` \n " ) && segment. ends_with ( "\n ``` " ) {
47
47
state = add_space ( & mut self . state_machine , state, i) ;
48
- state = add_quoted_dynamic_segment ( & mut self . state_machine , state) ;
49
- param_names. push ( & segment[ 1 ..segment. len ( ) - 1 ] ) ;
50
- } else if segment. starts_with ( "```rust\n " ) && segment. ends_with ( "\n ```" ) {
51
- state = add_space ( & mut self . state_machine , state, i) ;
52
- state = add_code_segment1 ( & mut self . state_machine , state) ;
53
- param_names. push ( & segment[ 8 ..segment. len ( ) - 4 ] ) ;
54
- } else if segment. starts_with ( "```\n " ) && segment. ends_with ( "\n ```" ) {
55
- state = add_space ( & mut self . state_machine , state, i) ;
56
- state = add_code_segment2 ( & mut self . state_machine , state) ;
48
+ state = add_code_segment_multi_line ( & mut self . state_machine , state) ;
57
49
param_names. push ( & segment[ 4 ..segment. len ( ) - 4 ] ) ;
58
50
} else if segment. starts_with ( "```" ) && segment. ends_with ( "```" ) {
59
51
state = add_space ( & mut self . state_machine , state, i) ;
60
- state = add_code_segment3 ( & mut self . state_machine , state) ;
52
+ state = add_code_segment_single_line_long ( & mut self . state_machine , state) ;
61
53
param_names. push ( & segment[ 3 ..segment. len ( ) - 3 ] ) ;
62
54
} else if segment. starts_with ( "`" ) && segment. ends_with ( "`" ) {
63
55
state = add_space ( & mut self . state_machine , state, i) ;
64
- state = add_code_segment4 ( & mut self . state_machine , state) ;
56
+ state = add_code_segment_single_line_short ( & mut self . state_machine , state) ;
65
57
param_names. push ( & segment[ 1 ..segment. len ( ) - 1 ] ) ;
66
58
} else if segment. starts_with ( "{" ) && segment. ends_with ( "}" ) {
67
59
state = add_space ( & mut self . state_machine , state, i) ;
@@ -145,45 +137,24 @@ fn add_remaining_segment(state_machine: &mut StateMachine, mut state: usize) ->
145
137
}
146
138
147
139
#[ inline]
148
- fn add_quoted_dynamic_segment ( state_machine : & mut StateMachine , mut state : usize ) -> usize {
149
- state = state_machine. add ( state, CharacterSet :: from_char ( '"' ) ) ;
150
- state = state_machine. add ( state, CharacterSet :: any ( ) ) ;
151
- state_machine. add_next_state ( state, state) ;
152
- state_machine. start_parse ( state) ;
153
- state_machine. end_parse ( state) ;
154
- state = state_machine. add ( state, CharacterSet :: from_char ( '"' ) ) ;
155
-
156
- state
157
- }
158
-
159
- #[ inline]
160
- fn add_code_segment1 ( state_machine : & mut StateMachine , mut state : usize ) -> usize {
140
+ fn add_code_segment_multi_line ( state_machine : & mut StateMachine , mut state : usize ) -> usize {
161
141
state = state_machine. add ( state, CharacterSet :: from_char ( '`' ) ) ;
162
142
state = state_machine. add ( state, CharacterSet :: from_char ( '`' ) ) ;
163
143
state = state_machine. add ( state, CharacterSet :: from_char ( '`' ) ) ;
164
- state = state_machine. add ( state, CharacterSet :: from_char ( 'r' ) ) ;
165
- state = state_machine. add ( state, CharacterSet :: from_char ( 'u' ) ) ;
166
- state = state_machine. add ( state, CharacterSet :: from_char ( 's' ) ) ;
167
- state = state_machine. add ( state, CharacterSet :: from_char ( 't' ) ) ;
168
- state = state_machine. add ( state, CharacterSet :: from_char ( '\n' ) ) ;
169
- state = state_machine. add ( state, CharacterSet :: any ( ) ) ;
144
+
145
+ let lambda = state;
146
+
147
+ let mut char_set = CharacterSet :: any ( ) ;
148
+ char_set. remove ( '`' ) ;
149
+ char_set. remove ( ' ' ) ;
150
+ char_set. remove ( '\n' ) ;
151
+ state = state_machine. add ( state, char_set) ;
170
152
state_machine. add_next_state ( state, state) ;
171
- state_machine. start_parse ( state) ;
172
- state_machine. end_parse ( state) ;
153
+
173
154
state = state_machine. add ( state, CharacterSet :: from_char ( '\n' ) ) ;
174
- state = state_machine. add ( state, CharacterSet :: from_char ( '`' ) ) ;
175
- state = state_machine. add ( state, CharacterSet :: from_char ( '`' ) ) ;
176
- state = state_machine. add ( state, CharacterSet :: from_char ( '`' ) ) ;
177
155
178
- state
179
- }
156
+ state_machine. add_next_state ( lambda, state) ;
180
157
181
- #[ inline]
182
- fn add_code_segment2 ( state_machine : & mut StateMachine , mut state : usize ) -> usize {
183
- state = state_machine. add ( state, CharacterSet :: from_char ( '`' ) ) ;
184
- state = state_machine. add ( state, CharacterSet :: from_char ( '`' ) ) ;
185
- state = state_machine. add ( state, CharacterSet :: from_char ( '`' ) ) ;
186
- state = state_machine. add ( state, CharacterSet :: from_char ( '\n' ) ) ;
187
158
state = state_machine. add ( state, CharacterSet :: any ( ) ) ;
188
159
state_machine. add_next_state ( state, state) ;
189
160
state_machine. start_parse ( state) ;
@@ -197,7 +168,7 @@ fn add_code_segment2(state_machine: &mut StateMachine, mut state: usize) -> usiz
197
168
}
198
169
199
170
#[ inline]
200
- fn add_code_segment3 ( state_machine : & mut StateMachine , mut state : usize ) -> usize {
171
+ fn add_code_segment_single_line_long ( state_machine : & mut StateMachine , mut state : usize ) -> usize {
201
172
state = state_machine. add ( state, CharacterSet :: from_char ( '`' ) ) ;
202
173
state = state_machine. add ( state, CharacterSet :: from_char ( '`' ) ) ;
203
174
state = state_machine. add ( state, CharacterSet :: from_char ( '`' ) ) ;
@@ -213,7 +184,7 @@ fn add_code_segment3(state_machine: &mut StateMachine, mut state: usize) -> usiz
213
184
}
214
185
215
186
#[ inline]
216
- fn add_code_segment4 ( state_machine : & mut StateMachine , mut state : usize ) -> usize {
187
+ fn add_code_segment_single_line_short ( state_machine : & mut StateMachine , mut state : usize ) -> usize {
217
188
state = state_machine. add ( state, CharacterSet :: from_char ( '`' ) ) ;
218
189
state = state_machine. add ( state, CharacterSet :: any ( ) ) ;
219
190
state_machine. add_next_state ( state, state) ;
0 commit comments