Skip to content

Commit 40150d3

Browse files
committed
Add support for the last kind of code block
1 parent 933215d commit 40150d3

File tree

1 file changed

+24
-2
lines changed

1 file changed

+24
-2
lines changed

src/commands.rs

Lines changed: 24 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -51,13 +51,17 @@ impl Commands {
5151
state = add_space(&mut self.state_machine, state, i);
5252
state = add_code_segment1(&mut self.state_machine, state);
5353
param_names.push(&segment[8..segment.len() - 4]);
54-
} else if segment.starts_with("```") && segment.ends_with("```") {
54+
} else if segment.starts_with("```\n") && segment.ends_with("\n```") {
5555
state = add_space(&mut self.state_machine, state, i);
5656
state = add_code_segment2(&mut self.state_machine, state);
57+
param_names.push(&segment[4..segment.len() - 4]);
58+
} else if segment.starts_with("```") && segment.ends_with("```") {
59+
state = add_space(&mut self.state_machine, state, i);
60+
state = add_code_segment3(&mut self.state_machine, state);
5761
param_names.push(&segment[3..segment.len() - 3]);
5862
} else if segment.starts_with("`") && segment.ends_with("`") {
5963
state = add_space(&mut self.state_machine, state, i);
60-
state = add_code_segment3(&mut self.state_machine, state);
64+
state = add_code_segment4(&mut self.state_machine, state);
6165
param_names.push(&segment[1..segment.len() - 1]);
6266
} else if segment.starts_with("{") && segment.ends_with("}") {
6367
state = add_space(&mut self.state_machine, state, i);
@@ -179,10 +183,12 @@ fn add_code_segment2(state_machine: &mut StateMachine, mut state: usize) -> usiz
179183
state = state_machine.add(state, CharacterSet::from_char('`'));
180184
state = state_machine.add(state, CharacterSet::from_char('`'));
181185
state = state_machine.add(state, CharacterSet::from_char('`'));
186+
state = state_machine.add(state, CharacterSet::from_char('\n'));
182187
state = state_machine.add(state, CharacterSet::any());
183188
state_machine.add_next_state(state, state);
184189
state_machine.start_parse(state);
185190
state_machine.end_parse(state);
191+
state = state_machine.add(state, CharacterSet::from_char('\n'));
186192
state = state_machine.add(state, CharacterSet::from_char('`'));
187193
state = state_machine.add(state, CharacterSet::from_char('`'));
188194
state = state_machine.add(state, CharacterSet::from_char('`'));
@@ -192,6 +198,22 @@ fn add_code_segment2(state_machine: &mut StateMachine, mut state: usize) -> usiz
192198

193199
#[inline]
194200
fn add_code_segment3(state_machine: &mut StateMachine, mut state: usize) -> usize {
201+
state = state_machine.add(state, CharacterSet::from_char('`'));
202+
state = state_machine.add(state, CharacterSet::from_char('`'));
203+
state = state_machine.add(state, CharacterSet::from_char('`'));
204+
state = state_machine.add(state, CharacterSet::any());
205+
state_machine.add_next_state(state, state);
206+
state_machine.start_parse(state);
207+
state_machine.end_parse(state);
208+
state = state_machine.add(state, CharacterSet::from_char('`'));
209+
state = state_machine.add(state, CharacterSet::from_char('`'));
210+
state = state_machine.add(state, CharacterSet::from_char('`'));
211+
212+
state
213+
}
214+
215+
#[inline]
216+
fn add_code_segment4(state_machine: &mut StateMachine, mut state: usize) -> usize {
195217
state = state_machine.add(state, CharacterSet::from_char('`'));
196218
state = state_machine.add(state, CharacterSet::any());
197219
state_machine.add_next_state(state, state);

0 commit comments

Comments
 (0)