Merge pull request #1167 from dalance/fix_summary_comment

Fix SUMMARY's parse_numbered with comment
This commit is contained in:
Eric Huss 2020-03-17 21:39:25 -07:00 committed by GitHub
commit 88684d843d
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
1 changed files with 31 additions and 0 deletions

View File

@ -377,6 +377,10 @@ impl<'a> SummaryParser<'a> {
items.push(item); items.push(item);
} }
Some(Event::Start(Tag::List(..))) => { 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 // recurse to parse the nested list
let (_, last_item) = get_last_link(&mut items)?; let (_, last_item) = get_last_link(&mut items)?;
let last_item_number = last_item let last_item_number = last_item
@ -696,6 +700,33 @@ mod tests {
assert_eq!(got, should_be); 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 /// This test ensures the book will continue to pass because it breaks the
/// `SUMMARY.md` up using level 2 headers ([example]). /// `SUMMARY.md` up using level 2 headers ([example]).
/// ///