Skip to content

Commit 8a37649

Browse files
committed
Remove support for reversing railroad elements
We no longer need to reverse the elements anywhere in our railroad diagrams, so let's remove the supporting infrastructure for doing this.
1 parent e323716 commit 8a37649

File tree

1 file changed

+12
-17
lines changed

1 file changed

+12
-17
lines changed

Diff for: mdbook-spec/src/grammar/render_railroad.rs

+12-17
Original file line numberDiff line numberDiff line change
@@ -71,7 +71,7 @@ impl Production {
7171
link_map: &HashMap<String, String>,
7272
md_link_map: &HashMap<String, String>,
7373
) -> Diagram<Box<dyn Node>> {
74-
let n = self.expression.render_railroad(stack, link_map, false);
74+
let n = self.expression.render_railroad(stack, link_map);
7575
let dest = md_link_map
7676
.get(&self.name)
7777
.map(|path| path.to_string())
@@ -92,34 +92,29 @@ impl Expression {
9292
&self,
9393
stack: bool,
9494
link_map: &HashMap<String, String>,
95-
reverse: bool,
9695
) -> Option<Box<dyn Node>> {
9796
let n: Box<dyn Node> = match &self.kind {
9897
ExpressionKind::Grouped(e) => {
9998
// I don't think this needs anything special. The grouped
10099
// expression is usually an Alt or Optional or something like
101100
// that which ends up as a distinct railroad node. But I'm not
102101
// sure.
103-
e.render_railroad(stack, link_map, reverse)?
102+
e.render_railroad(stack, link_map)?
104103
}
105104
ExpressionKind::Alt(es) => {
106105
let choices: Vec<_> = es
107106
.iter()
108-
.map(|e| e.render_railroad(stack, link_map, reverse))
107+
.map(|e| e.render_railroad(stack, link_map))
109108
.filter_map(|n| n)
110109
.collect();
111110
Box::new(Choice::<Box<dyn Node>>::new(choices))
112111
}
113112
ExpressionKind::Sequence(es) => {
114-
let mut es: Vec<_> = es.iter().collect();
115-
// For reversing, see ::Repeat for an explanation.
116-
if reverse {
117-
es.reverse();
118-
}
113+
let es: Vec<_> = es.iter().collect();
119114
let make_seq = |es: &[&Expression]| {
120115
let seq: Vec<_> = es
121116
.iter()
122-
.map(|e| e.render_railroad(stack, link_map, reverse))
117+
.map(|e| e.render_railroad(stack, link_map))
123118
.filter_map(|n| n)
124119
.collect();
125120
let seq: Sequence<Box<dyn Node>> = Sequence::new(seq);
@@ -159,31 +154,31 @@ impl Expression {
159154
}
160155
}
161156
ExpressionKind::Optional(e) => {
162-
let n = e.render_railroad(stack, link_map, reverse)?;
157+
let n = e.render_railroad(stack, link_map)?;
163158
Box::new(Optional::new(n))
164159
}
165160
ExpressionKind::Repeat(e) => {
166-
let n = e.render_railroad(stack, link_map, reverse)?;
161+
let n = e.render_railroad(stack, link_map)?;
167162
Box::new(Optional::new(Repeat::new(n, railroad::Empty)))
168163
}
169164
ExpressionKind::RepeatNonGreedy(e) => {
170-
let n = e.render_railroad(stack, link_map, reverse)?;
165+
let n = e.render_railroad(stack, link_map)?;
171166
let r = Box::new(Optional::new(Repeat::new(n, railroad::Empty)));
172167
let lbox = LabeledBox::new(r, Comment::new("non-greedy".to_string()));
173168
Box::new(lbox)
174169
}
175170
ExpressionKind::RepeatPlus(e) => {
176-
let n = e.render_railroad(stack, link_map, reverse)?;
171+
let n = e.render_railroad(stack, link_map)?;
177172
Box::new(Repeat::new(n, railroad::Empty))
178173
}
179174
ExpressionKind::RepeatPlusNonGreedy(e) => {
180-
let n = e.render_railroad(stack, link_map, reverse)?;
175+
let n = e.render_railroad(stack, link_map)?;
181176
let r = Repeat::new(n, railroad::Empty);
182177
let lbox = LabeledBox::new(r, Comment::new("non-greedy".to_string()));
183178
Box::new(lbox)
184179
}
185180
ExpressionKind::RepeatRange(e, a, b) => {
186-
let n = e.render_railroad(stack, link_map, reverse)?;
181+
let n = e.render_railroad(stack, link_map)?;
187182
let cmt = match (a, b) {
188183
(Some(a), Some(b)) => format!("repeat between {a} and {b} times"),
189184
(None, Some(b)) => format!("repeat at most {b} times"),
@@ -202,7 +197,7 @@ impl Expression {
202197
Box::new(Choice::<Box<dyn Node>>::new(ns))
203198
}
204199
ExpressionKind::NegExpression(e) => {
205-
let n = e.render_railroad(stack, link_map, reverse)?;
200+
let n = e.render_railroad(stack, link_map)?;
206201
let ch = node_for_nt(link_map, "CHAR");
207202
Box::new(Except::new(Box::new(ch), n))
208203
}

0 commit comments

Comments
 (0)