Fix rebuild content logic to include sections
This commit is contained in:
parent
db84411788
commit
566f4e6919
26
src/site.rs
26
src/site.rs
|
@ -284,25 +284,41 @@ impl Site {
|
|||
}
|
||||
|
||||
pub fn rebuild_after_content_change(&mut self, path: &Path) -> Result<()> {
|
||||
let is_section = path.ends_with("_index.md");
|
||||
let is_index_section = if is_section {
|
||||
path.parent().unwrap() == self.base_path.join("content")
|
||||
} else {
|
||||
false
|
||||
};
|
||||
|
||||
if path.exists() {
|
||||
// file exists, either a new one or updating content
|
||||
if self.pages.contains_key(path) {
|
||||
if path.ends_with("_index.md") {
|
||||
if is_section {
|
||||
if is_index_section {
|
||||
self.index = Some(Section::from_file(path, &self.config)?);
|
||||
} else {
|
||||
self.add_section(path)?;
|
||||
}
|
||||
} else {
|
||||
// probably just an update so just re-parse that page
|
||||
self.add_page_and_render(path)?;
|
||||
}
|
||||
} else {
|
||||
// new file?
|
||||
self.add_page_and_render(path)?;
|
||||
// File doesn't exist -> a deletion so we remove it from everything
|
||||
if is_section {
|
||||
if !is_index_section {
|
||||
let relative_path = self.sections[path].relative_path.clone();
|
||||
self.sections.remove(path);
|
||||
self.permalinks.remove(&relative_path);
|
||||
} else {
|
||||
self.index = None;
|
||||
}
|
||||
} else {
|
||||
// File doesn't exist -> a deletion so we remove it from everything
|
||||
let relative_path = self.pages[path].relative_path.clone();
|
||||
self.pages.remove(path);
|
||||
self.permalinks.remove(&relative_path);
|
||||
}
|
||||
}
|
||||
self.populate_sections();
|
||||
self.populate_tags_and_categories();
|
||||
self.build()
|
||||
|
|
Loading…
Reference in a new issue