diff options
author | Eric Huss <eric@huss.org> | 2020-08-08 08:19:06 -0700 |
---|---|---|
committer | GitHub <noreply@github.com> | 2020-08-08 08:19:06 -0700 |
commit | 3d44553671066632a80931ef6fd144a56ffbba54 (patch) | |
tree | f899f12095ab5f67650c4e5bdab74eacc9926e9b /src | |
parent | a00e7d17695d43af1f7999008b08a75bcb0c134f (diff) | |
parent | 9d5c454e47f03c61baf3856e4564c4cccf3d10b1 (diff) |
Merge pull request #1293 from Evian-Zhang/master
allow space in SUMMARY.md's link destination
Diffstat (limited to 'src')
-rw-r--r-- | src/book/summary.rs | 26 |
1 files changed, 26 insertions, 0 deletions
diff --git a/src/book/summary.rs b/src/book/summary.rs index 4782eb84..b909629c 100644 --- a/src/book/summary.rs +++ b/src/book/summary.rs @@ -333,6 +333,7 @@ impl<'a> SummaryParser<'a> { /// Finishes parsing a link once the `Event::Start(Tag::Link(..))` has been opened. fn parse_link(&mut self, href: String) -> Link { + let href = href.replace("%20", " "); let link_content = collect_events!(self.stream, end Tag::Link(..)); let name = stringify_events(link_content); @@ -947,4 +948,29 @@ mod tests { assert_eq!(got, should_be); } + + #[test] + fn allow_space_in_link_destination() { + let src = "- [test1](./test%20link1.md)\n- [test2](<./test link2.md>)"; + let should_be = vec![ + SummaryItem::Link(Link { + name: String::from("test1"), + location: Some(PathBuf::from("./test link1.md")), + number: Some(SectionNumber(vec![1])), + nested_items: Vec::new(), + }), + SummaryItem::Link(Link { + name: String::from("test2"), + location: Some(PathBuf::from("./test link2.md")), + number: Some(SectionNumber(vec![2])), + nested_items: Vec::new(), + }), + ]; + let mut parser = SummaryParser::new(src); + let got = parser + .parse_numbered(&mut 0, &mut SectionNumber::default()) + .unwrap(); + + assert_eq!(got, should_be); + } } |