Browse Source

Merge pull request #424 from Freaky/hash-orphans

Use a HashSet for detecting orphan pages
index-subcmd
Vincent Prouillet GitHub 6 years ago
parent
commit
5e6458aa61
No known key found for this signature in database GPG Key ID: 4AEE18F83AFDEB23
1 changed files with 9 additions and 14 deletions
  1. +9
    -14
      components/site/src/lib.rs

+ 9
- 14
components/site/src/lib.rs View File

@@ -21,7 +21,7 @@ extern crate imageproc;
#[cfg(test)] #[cfg(test)]
extern crate tempfile; extern crate tempfile;


use std::collections::HashMap;
use std::collections::{HashMap, HashSet};
use std::fs::{create_dir_all, remove_dir_all, copy}; use std::fs::{create_dir_all, remove_dir_all, copy};
use std::mem; use std::mem;
use std::path::{Path, PathBuf}; use std::path::{Path, PathBuf};
@@ -149,20 +149,15 @@ impl Site {


/// Get all the orphan (== without section) pages in the site /// Get all the orphan (== without section) pages in the site
pub fn get_all_orphan_pages(&self) -> Vec<&Page> { pub fn get_all_orphan_pages(&self) -> Vec<&Page> {
let mut pages_in_sections = vec![];
let mut orphans = vec![];

for s in self.sections.values() {
pages_in_sections.extend(s.all_pages_path());
}

for page in self.pages.values() {
if !pages_in_sections.contains(&page.file.path) {
orphans.push(page);
}
}
let pages_in_sections = self.sections
.values()
.flat_map(|s| s.all_pages_path())
.collect::<HashSet<_>>();


orphans
self.pages
.values()
.filter(|page| !pages_in_sections.contains(&page.file.path))
.collect()
} }


pub fn set_base_url(&mut self, base_url: String) { pub fn set_base_url(&mut self, base_url: String) {


Loading…
Cancel
Save