summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authordalance <dalance@gmail.com>2020-03-17 17:11:12 +0900
committerdalance <dalance@gmail.com>2020-03-18 12:28:27 +0900
commitb82562fe8ab14623675a6c3482685ab76f875bdd (patch)
tree2eaaaa4d94adfa807987be641601558ba9964a28
parent44c3213f5d82cb41e1184f5b7f76235a38b5d54c (diff)
Fix SUMMARY's parse_numbered with comment
-rw-r--r--src/book/summary.rs31
1 files changed, 31 insertions, 0 deletions
diff --git a/src/book/summary.rs b/src/book/summary.rs
index 33e8126d..1e130537 100644
--- a/src/book/summary.rs
+++ b/src/book/summary.rs
@@ -377,6 +377,10 @@ impl<'a> SummaryParser<'a> {
items.push(item);
}
Some(Event::Start(Tag::List(..))) => {
+ // Skip this tag after comment bacause it is not nested.
+ if items.is_empty() {
+ continue;
+ }
// recurse to parse the nested list
let (_, last_item) = get_last_link(&mut items)?;
let last_item_number = last_item
@@ -696,6 +700,33 @@ mod tests {
assert_eq!(got, should_be);
}
+ #[test]
+ fn parse_numbered_chapters_separated_by_comment() {
+ let src = "- [First](./first.md)\n<!-- this is a comment -->\n- [Second](./second.md)";
+
+ let should_be = vec![
+ SummaryItem::Link(Link {
+ name: String::from("First"),
+ location: PathBuf::from("./first.md"),
+ number: Some(SectionNumber(vec![1])),
+ nested_items: Vec::new(),
+ }),
+ SummaryItem::Link(Link {
+ name: String::from("Second"),
+ location: PathBuf::from("./second.md"),
+ number: Some(SectionNumber(vec![2])),
+ nested_items: Vec::new(),
+ }),
+ ];
+
+ let mut parser = SummaryParser::new(src);
+ let _ = parser.stream.next();
+
+ let got = parser.parse_numbered().unwrap();
+
+ assert_eq!(got, should_be);
+ }
+
/// This test ensures the book will continue to pass because it breaks the
/// `SUMMARY.md` up using level 2 headers ([example]).
///