diff options
author | Lars Wirzenius <liw@liw.fi> | 2022-10-16 10:40:42 +0300 |
---|---|---|
committer | Lars Wirzenius <liw@liw.fi> | 2022-10-16 10:40:42 +0300 |
commit | 732fa0f4041b4ad539f607e1f299e7b25c2fe45d (patch) | |
tree | 26f37bbdd88ce3eaa0db355a38a7dd24f77b19cf | |
parent | ffe3d58415c4f604732106409ff8f4c16e3667de (diff) | |
download | riki-732fa0f4041b4ad539f607e1f299e7b25c2fe45d.tar.gz |
refactor: simplify processing by dropping queue of names
Sponsored-by: author
-rw-r--r-- | src/site.rs | 26 |
1 files changed, 7 insertions, 19 deletions
diff --git a/src/site.rs b/src/site.rs index 3636789..874f3c8 100644 --- a/src/site.rs +++ b/src/site.rs @@ -7,7 +7,7 @@ use crate::srcdir::{PathFilter, SourceDir}; use crate::token::TokenPatterns; use crate::util::make_relative_link; use log::{debug, info, trace}; -use std::collections::{BinaryHeap, HashMap}; +use std::collections::HashMap; use std::path::{Path, PathBuf}; use std::time::UNIX_EPOCH; @@ -17,7 +17,6 @@ pub struct Site { builder: NameBuilder, unprocessed_pages: Vec<UnprocessedPage>, markdown_pages: Vec<MarkdownPage>, - names_to_process: BinaryHeap<Name>, pages_that_will_exist: PageSet, files: Names, } @@ -36,7 +35,6 @@ impl Site { markdown_pages: vec![], files: Names::default(), patterns: TokenPatterns::default(), - names_to_process: BinaryHeap::new(), pages_that_will_exist: PageSet::default(), shortcuts: HashMap::new(), } @@ -47,7 +45,10 @@ impl Site { trace!("scan: name={}", name); if name.is_wikitext_page() { trace!("scan: it's a page"); - self.names_to_process.push(name); + debug!("loading wikitext page {}", name.source_path().display()); + let page = WikitextPage::read(&name)?; + self.files.insert(name); + self.add_wikitextpage(page)?; } else { trace!("scan: it's a non-page file"); let filename = name.source_path(); @@ -81,7 +82,7 @@ impl Site { pub fn process(&mut self) -> Result<(), SiteError> { trace!("processing queues"); loop { - if !self.process_name()? && !self.process_page()? { + if !self.process_page()? { trace!("processing queues done"); break; } @@ -89,19 +90,6 @@ impl Site { Ok(()) } - fn process_name(&mut self) -> Result<bool, SiteError> { - if let Some(name) = self.names_to_process.pop() { - debug!("loading wikitext page {}", name.source_path().display()); - let page = WikitextPage::read(&name)?; - self.files.insert(name); - self.add_wikitextpage(page)?; - Ok(true) - } else { - trace!("name_queue was empty"); - Ok(false) - } - } - fn process_page(&mut self) -> Result<bool, SiteError> { if let Some(page) = self.unprocessed_pages.pop() { debug!( @@ -126,7 +114,7 @@ impl Site { } pub fn pages_and_files(&self) -> impl Iterator<Item = &Name> { - self.files.iter().chain(self.names_to_process.iter()) + self.files.iter() } fn all_files(&self) -> Result<Vec<Name>, SiteError> { |