Skip to content

Commit 60be20a

Browse files
committed
allow space in SUMMARY.md's link destination
1 parent 8746206 commit 60be20a

File tree

1 file changed

+32
-0
lines changed

1 file changed

+32
-0
lines changed

src/book/summary.rs

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -333,6 +333,7 @@ impl<'a> SummaryParser<'a> {
333333

334334
/// Finishes parsing a link once the `Event::Start(Tag::Link(..))` has been opened.
335335
fn parse_link(&mut self, href: String) -> Link {
336+
let href = href.replace("%20", " ").replace("+", " ");
336337
let link_content = collect_events!(self.stream, end Tag::Link(..));
337338
let name = stringify_events(link_content);
338339

@@ -947,4 +948,35 @@ mod tests {
947948

948949
assert_eq!(got, should_be);
949950
}
951+
952+
#[test]
953+
fn allow_space_in_link_destination() {
954+
let src = "- [test1](./test%20link1.md)\n- [test2](./test+link2.md)\n- [test3](<./test link3.md>)";
955+
let should_be = vec![
956+
SummaryItem::Link(Link {
957+
name: String::from("test1"),
958+
location: Some(PathBuf::from("./test link1.md")),
959+
number: Some(SectionNumber(vec![1])),
960+
nested_items: Vec::new(),
961+
}),
962+
SummaryItem::Link(Link {
963+
name: String::from("test2"),
964+
location: Some(PathBuf::from("./test link2.md")),
965+
number: Some(SectionNumber(vec![2])),
966+
nested_items: Vec::new(),
967+
}),
968+
SummaryItem::Link(Link {
969+
name: String::from("test3"),
970+
location: Some(PathBuf::from("./test link3.md")),
971+
number: Some(SectionNumber(vec![3])),
972+
nested_items: Vec::new(),
973+
}),
974+
];
975+
let mut parser = SummaryParser::new(src);
976+
let got = parser
977+
.parse_numbered(&mut 0, &mut SectionNumber::default())
978+
.unwrap();
979+
980+
assert_eq!(got, should_be);
981+
}
950982
}

0 commit comments

Comments
 (0)