diff options
Diffstat (limited to 'src/book/summary.rs')
-rw-r--r-- | src/book/summary.rs | 64 |
1 files changed, 11 insertions, 53 deletions
diff --git a/src/book/summary.rs b/src/book/summary.rs index 253de5f7..1e130537 100644 --- a/src/book/summary.rs +++ b/src/book/summary.rs @@ -72,8 +72,6 @@ pub struct Link { /// The location of the chapter's source file, taking the book's `src` /// directory as the root. pub location: PathBuf, - /// An optional anchor in the original link. - pub anchor: Option<String>, /// The section number, if this chapter is in the numbered section. pub number: Option<SectionNumber>, /// Any nested items this chapter may contain. @@ -82,15 +80,10 @@ pub struct Link { impl Link { /// Create a new link with no nested items. - pub fn new<S: Into<String>, P: AsRef<Path>>( - name: S, - location: P, - anchor: Option<String>, - ) -> Link { + pub fn new<S: Into<String>, P: AsRef<Path>>(name: S, location: P) -> Link { Link { name: name.into(), location: location.as_ref().to_path_buf(), - anchor, number: None, nested_items: Vec::new(), } @@ -102,7 +95,6 @@ impl Default for Link { Link { name: String::new(), location: PathBuf::new(), - anchor: None, number: None, nested_items: Vec::new(), } @@ -284,18 +276,15 @@ impl<'a> SummaryParser<'a> { let link_content = collect_events!(self.stream, end Tag::Link(..)); let name = stringify_events(link_content); - let mut split = href.splitn(2, '#'); - let (href, anchor) = (split.next(), split.next()); - - match href { - Some(href) if !href.is_empty() => Ok(Link { + if href.is_empty() { + Err(self.parse_error("You can't have an empty link.")) + } else { + Ok(Link { name, location: PathBuf::from(href.to_string()), - anchor: anchor.map(String::from), number: None, nested_items: Vec::new(), - }), - _ => Err(self.parse_error("You can't have an empty link.")), + }) } } @@ -687,12 +676,10 @@ mod tests { SummaryItem::Link(Link { name: String::from("First"), location: PathBuf::from("./first.md"), - anchor: None, number: Some(SectionNumber(vec![1])), nested_items: vec![SummaryItem::Link(Link { name: String::from("Nested"), location: PathBuf::from("./nested.md"), - anchor: None, number: Some(SectionNumber(vec![1, 1])), nested_items: Vec::new(), })], @@ -700,7 +687,6 @@ mod tests { SummaryItem::Link(Link { name: String::from("Second"), location: PathBuf::from("./second.md"), - anchor: None, number: Some(SectionNumber(vec![2])), nested_items: Vec::new(), }), @@ -722,14 +708,12 @@ mod tests { SummaryItem::Link(Link { name: String::from("First"), location: PathBuf::from("./first.md"), - anchor: None, number: Some(SectionNumber(vec![1])), nested_items: Vec::new(), }), SummaryItem::Link(Link { name: String::from("Second"), location: PathBuf::from("./second.md"), - anchor: None, number: Some(SectionNumber(vec![2])), nested_items: Vec::new(), }), @@ -743,26 +727,6 @@ mod tests { assert_eq!(got, should_be); } - #[test] - fn parse_anchors() { - let src = "- [Link to anchor](./page.md#Foo)"; - - let should_be = vec![SummaryItem::Link(Link { - name: String::from("Link to anchor"), - location: PathBuf::from("./page.md"), - anchor: Some("Foo".to_string()), - number: Some(SectionNumber(vec![1])), - 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]). /// @@ -774,14 +738,12 @@ mod tests { SummaryItem::Link(Link { name: String::from("First"), location: PathBuf::from("./first.md"), - anchor: None, number: Some(SectionNumber(vec![1])), nested_items: Vec::new(), }), SummaryItem::Link(Link { name: String::from("Second"), location: PathBuf::from("./second.md"), - anchor: None, number: Some(SectionNumber(vec![2])), nested_items: Vec::new(), }), @@ -797,13 +759,12 @@ mod tests { #[test] fn an_empty_link_location_is_an_error() { - for src in &["- [Empty]()\n", "- [Empty](#Foo)\n"] { - let mut parser = SummaryParser::new(src); - parser.stream.next(); + let src = "- [Empty]()\n"; + let mut parser = SummaryParser::new(src); + parser.stream.next(); - let got = parser.parse_numbered(); - assert!(got.is_err()); - } + let got = parser.parse_numbered(); + assert!(got.is_err()); } /// Regression test for https://github.com/rust-lang/mdBook/issues/779 @@ -818,7 +779,6 @@ mod tests { location: PathBuf::from("./first.md"), number: Some(SectionNumber(vec![1])), nested_items: Vec::new(), - anchor: None, }), SummaryItem::Separator, SummaryItem::Link(Link { @@ -826,13 +786,11 @@ mod tests { location: PathBuf::from("./second.md"), number: Some(SectionNumber(vec![2])), nested_items: Vec::new(), - anchor: None, }), SummaryItem::Separator, SummaryItem::Link(Link { name: String::from("Third"), location: PathBuf::from("./third.md"), - anchor: None, number: Some(SectionNumber(vec![3])), nested_items: Vec::new(), }), |