Skip to content

Commit 44dfdcf

Browse files
committed
Support any or no language spec in multiline code blocks
1 parent 40150d3 commit 44dfdcf

File tree

1 file changed

+17
-46
lines changed

1 file changed

+17
-46
lines changed

src/commands.rs

Lines changed: 17 additions & 46 deletions
Original file line numberDiff line numberDiff line change
@@ -43,25 +43,17 @@ impl Commands {
4343
.filter(|segment| segment.len() > 0)
4444
.enumerate()
4545
.for_each(|(i, segment)| {
46-
if segment.starts_with("[") && segment.ends_with("]") {
46+
if segment.starts_with("```\n") && segment.ends_with("\n```") {
4747
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);
5749
param_names.push(&segment[4..segment.len() - 4]);
5850
} else if segment.starts_with("```") && segment.ends_with("```") {
5951
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);
6153
param_names.push(&segment[3..segment.len() - 3]);
6254
} else if segment.starts_with("`") && segment.ends_with("`") {
6355
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);
6557
param_names.push(&segment[1..segment.len() - 1]);
6658
} else if segment.starts_with("{") && segment.ends_with("}") {
6759
state = add_space(&mut self.state_machine, state, i);
@@ -145,45 +137,24 @@ fn add_remaining_segment(state_machine: &mut StateMachine, mut state: usize) ->
145137
}
146138

147139
#[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 {
161141
state = state_machine.add(state, CharacterSet::from_char('`'));
162142
state = state_machine.add(state, CharacterSet::from_char('`'));
163143
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);
170152
state_machine.add_next_state(state, state);
171-
state_machine.start_parse(state);
172-
state_machine.end_parse(state);
153+
173154
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('`'));
177155

178-
state
179-
}
156+
state_machine.add_next_state(lambda, state);
180157

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'));
187158
state = state_machine.add(state, CharacterSet::any());
188159
state_machine.add_next_state(state, state);
189160
state_machine.start_parse(state);
@@ -197,7 +168,7 @@ fn add_code_segment2(state_machine: &mut StateMachine, mut state: usize) -> usiz
197168
}
198169

199170
#[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 {
201172
state = state_machine.add(state, CharacterSet::from_char('`'));
202173
state = state_machine.add(state, CharacterSet::from_char('`'));
203174
state = state_machine.add(state, CharacterSet::from_char('`'));
@@ -213,7 +184,7 @@ fn add_code_segment3(state_machine: &mut StateMachine, mut state: usize) -> usiz
213184
}
214185

215186
#[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 {
217188
state = state_machine.add(state, CharacterSet::from_char('`'));
218189
state = state_machine.add(state, CharacterSet::any());
219190
state_machine.add_next_state(state, state);

0 commit comments

Comments
 (0)