summaryrefslogtreecommitdiffstats
path: root/src/book
diff options
context:
space:
mode:
authorDylan DPC <dylan.dpc@gmail.com>2020-03-24 23:52:24 +0100
committerGitHub <noreply@github.com>2020-03-24 23:52:24 +0100
commit59568208ff88e78347dd317f4cdc7bf740ca2171 (patch)
treef223108d47a9ddad628be10b470eb02bfb3b5a5a /src/book
parent21a16c9b75c6ba5714fc5909a3ebd413f5906800 (diff)
Revert "Support anchors in SUMMARY (#1173)" (#1175)
Diffstat (limited to 'src/book')
-rw-r--r--src/book/book.rs13
-rw-r--r--src/book/summary.rs64
2 files changed, 14 insertions, 63 deletions
diff --git a/src/book/book.rs b/src/book/book.rs
index 1a7ba447..6a31c9e8 100644
--- a/src/book/book.rs
+++ b/src/book/book.rs
@@ -153,8 +153,6 @@ pub struct Chapter {
pub sub_items: Vec<BookItem>,
/// The chapter's location, relative to the `SUMMARY.md` file.
pub path: PathBuf,
- /// An optional anchor in the original link.
- pub anchor: Option<String>,
/// An ordered list of the names of each chapter above this one, in the hierarchy.
pub parent_names: Vec<String>,
}
@@ -245,7 +243,6 @@ fn load_chapter<P: AsRef<Path>>(
let mut sub_item_parents = parent_names.clone();
let mut ch = Chapter::new(&link.name, content, stripped, parent_names);
ch.number = link.number.clone();
- ch.anchor = link.anchor.clone();
sub_item_parents.push(link.name.clone());
let sub_items = link
@@ -323,7 +320,7 @@ And here is some \
.write_all(DUMMY_SRC.as_bytes())
.unwrap();
- let link = Link::new("Chapter 1", chapter_path, None);
+ let link = Link::new("Chapter 1", chapter_path);
(link, temp)
}
@@ -339,7 +336,7 @@ And here is some \
.write_all(b"Hello World!")
.unwrap();
- let mut second = Link::new("Nested Chapter 1", &second_path, None);
+ let mut second = Link::new("Nested Chapter 1", &second_path);
second.number = Some(SectionNumber(vec![1, 2]));
root.nested_items.push(second.clone().into());
@@ -365,7 +362,7 @@ And here is some \
#[test]
fn cant_load_a_nonexistent_chapter() {
- let link = Link::new("Chapter 1", "/foo/bar/baz.md", None);
+ let link = Link::new("Chapter 1", "/foo/bar/baz.md");
let got = load_chapter(&link, "", Vec::new());
assert!(got.is_err());
@@ -382,7 +379,6 @@ And here is some \
path: PathBuf::from("second.md"),
parent_names: vec![String::from("Chapter 1")],
sub_items: Vec::new(),
- anchor: None,
};
let should_be = BookItem::Chapter(Chapter {
name: String::from("Chapter 1"),
@@ -395,7 +391,6 @@ And here is some \
BookItem::Separator,
BookItem::Chapter(nested.clone()),
],
- anchor: None,
});
let got = load_summary_item(&SummaryItem::Link(root), temp.path(), Vec::new()).unwrap();
@@ -470,7 +465,6 @@ And here is some \
Vec::new(),
)),
],
- anchor: None,
}),
BookItem::Separator,
],
@@ -523,7 +517,6 @@ And here is some \
Vec::new(),
)),
],
- anchor: None,
}),
BookItem::Separator,
],
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(),
}),