Browse Source

Fix subsection pages not being filled correctly

index-subcmd
Vincent Prouillet 7 years ago
parent
commit
195b760fdc
3 changed files with 18 additions and 5 deletions
  1. +15
    -5
      components/site/src/lib.rs
  2. +1
    -0
      components/site/test_site/templates/section.html
  3. +2
    -0
      components/site/tests/site.rs

+ 15
- 5
components/site/src/lib.rs View File

@@ -304,10 +304,14 @@ impl Site {
/// Find out the direct subsections of each subsection if there are some /// Find out the direct subsections of each subsection if there are some
/// as well as the pages for each section /// as well as the pages for each section
pub fn populate_sections(&mut self) { pub fn populate_sections(&mut self) {
let mut grandparent_paths = HashMap::new();
let mut grandparent_paths: HashMap<PathBuf, Vec<PathBuf>> = HashMap::new();

for section in self.sections.values_mut() { for section in self.sections.values_mut() {
if let Some(ref grand_parent) = section.file.grand_parent { if let Some(ref grand_parent) = section.file.grand_parent {
grandparent_paths.entry(grand_parent.to_path_buf()).or_insert_with(|| vec![]).push(section.clone());
grandparent_paths
.entry(grand_parent.to_path_buf())
.or_insert_with(|| vec![])
.push(section.file.path.clone());
} }
// Make sure the pages of a section are empty since we can call that many times on `serve` // Make sure the pages of a section are empty since we can call that many times on `serve`
section.pages = vec![]; section.pages = vec![];
@@ -321,14 +325,20 @@ impl Site {
} }
} }


self.sort_sections_pages(None);
// TODO: remove this clone
let sections = self.sections.clone();

for section in self.sections.values_mut() { for section in self.sections.values_mut() {
match grandparent_paths.get(&section.file.parent) { match grandparent_paths.get(&section.file.parent) {
Some(paths) => section.subsections.extend(paths.clone()),
Some(paths) => {
for p in paths {
section.subsections.push(sections[p].clone());
}
},
None => continue, None => continue,
}; };
} }

self.sort_sections_pages(None);
} }


/// Sorts the pages of the section at the given path /// Sorts the pages of the section at the given path


+ 1
- 0
components/site/test_site/templates/section.html View File

@@ -6,5 +6,6 @@
{% endfor %} {% endfor %}
{% for subsection in section.subsections %} {% for subsection in section.subsections %}
{{subsection.title}} {{subsection.title}}
Sub-pages: {{subsection.pages | length}}
{% endfor %} {% endfor %}
{% endblock content %} {% endblock content %}

+ 2
- 0
components/site/tests/site.rs View File

@@ -115,6 +115,8 @@ fn can_build_site_without_live_reload() {
assert!(file_exists!(public, "posts/tutorials/index.html")); assert!(file_exists!(public, "posts/tutorials/index.html"));
assert!(file_exists!(public, "posts/tutorials/devops/index.html")); assert!(file_exists!(public, "posts/tutorials/devops/index.html"));
assert!(file_exists!(public, "posts/tutorials/programming/index.html")); assert!(file_exists!(public, "posts/tutorials/programming/index.html"));
// Ensure subsection pages are correctly filled
assert!(file_contains!(public, "posts/tutorials/index.html", "Sub-pages: 2"));
// TODO: add assertion for syntax highlighting // TODO: add assertion for syntax highlighting


// aliases work // aliases work


Loading…
Cancel
Save