Skip to content

Commit 60eb4c6

Browse files
authored
Merge pull request #49 from rust-lang/code-commands
Code commands
2 parents 5dd74e6 + 8fdf7c1 commit 60eb4c6

File tree

1 file changed

+64
-6
lines changed

1 file changed

+64
-6
lines changed

src/commands.rs

Lines changed: 64 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -43,9 +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("```") {
4747
state = add_space(&mut self.state_machine, state, i);
48-
state = add_quoted_dynamic_segment(&mut self.state_machine, state);
48+
state = add_code_segment_multi_line(&mut self.state_machine, state);
49+
param_names.push(&segment[4..segment.len() - 3]);
50+
} else if segment.starts_with("```") && segment.ends_with("```") {
51+
state = add_space(&mut self.state_machine, state, i);
52+
state = add_code_segment_single_line_long(&mut self.state_machine, state);
53+
param_names.push(&segment[3..segment.len() - 3]);
54+
} else if segment.starts_with("`") && segment.ends_with("`") {
55+
state = add_space(&mut self.state_machine, state, i);
56+
state = add_code_segment_single_line_short(&mut self.state_machine, state);
4957
param_names.push(&segment[1..segment.len() - 1]);
5058
} else if segment.starts_with("{") && segment.ends_with("}") {
5159
state = add_space(&mut self.state_machine, state, i);
@@ -99,7 +107,10 @@ impl Commands {
99107
#[inline]
100108
fn add_space(state_machine: &mut StateMachine, mut state: usize, i: usize) -> usize {
101109
if i > 0 {
102-
state = state_machine.add(state, CharacterSet::from_char(' '));
110+
let mut char_set = CharacterSet::from_char(' ');
111+
char_set.insert('\n');
112+
113+
state = state_machine.add(state, char_set);
103114
state_machine.add_next_state(state, state);
104115
}
105116
state
@@ -129,13 +140,60 @@ fn add_remaining_segment(state_machine: &mut StateMachine, mut state: usize) ->
129140
}
130141

131142
#[inline]
132-
fn add_quoted_dynamic_segment(state_machine: &mut StateMachine, mut state: usize) -> usize {
133-
state = state_machine.add(state, CharacterSet::from_char('"'));
143+
fn add_code_segment_multi_line(state_machine: &mut StateMachine, mut state: usize) -> usize {
144+
state = state_machine.add(state, CharacterSet::from_char('`'));
145+
state = state_machine.add(state, CharacterSet::from_char('`'));
146+
state = state_machine.add(state, CharacterSet::from_char('`'));
147+
148+
let lambda = state;
149+
150+
let mut char_set = CharacterSet::any();
151+
char_set.remove('`');
152+
char_set.remove(' ');
153+
char_set.remove('\n');
154+
state = state_machine.add(state, char_set);
155+
state_machine.add_next_state(state, state);
156+
157+
state = state_machine.add(state, CharacterSet::from_char('\n'));
158+
159+
state_machine.add_next_state(lambda, state);
160+
161+
state = state_machine.add(state, CharacterSet::any());
162+
state_machine.add_next_state(state, state);
163+
state_machine.start_parse(state);
164+
state_machine.end_parse(state);
165+
166+
state = state_machine.add(state, CharacterSet::from_char('`'));
167+
state = state_machine.add(state, CharacterSet::from_char('`'));
168+
state = state_machine.add(state, CharacterSet::from_char('`'));
169+
170+
state
171+
}
172+
173+
#[inline]
174+
fn add_code_segment_single_line_long(state_machine: &mut StateMachine, mut state: usize) -> usize {
175+
state = state_machine.add(state, CharacterSet::from_char('`'));
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::any());
179+
state_machine.add_next_state(state, state);
180+
state_machine.start_parse(state);
181+
state_machine.end_parse(state);
182+
state = state_machine.add(state, CharacterSet::from_char('`'));
183+
state = state_machine.add(state, CharacterSet::from_char('`'));
184+
state = state_machine.add(state, CharacterSet::from_char('`'));
185+
186+
state
187+
}
188+
189+
#[inline]
190+
fn add_code_segment_single_line_short(state_machine: &mut StateMachine, mut state: usize) -> usize {
191+
state = state_machine.add(state, CharacterSet::from_char('`'));
134192
state = state_machine.add(state, CharacterSet::any());
135193
state_machine.add_next_state(state, state);
136194
state_machine.start_parse(state);
137195
state_machine.end_parse(state);
138-
state = state_machine.add(state, CharacterSet::from_char('"'));
196+
state = state_machine.add(state, CharacterSet::from_char('`'));
139197

140198
state
141199
}

0 commit comments

Comments
 (0)