Replace `populate_next_and_previous_page` with `populate_siblings`index-subcmd
@@ -11,7 +11,7 @@ use std::collections::HashMap; | |||||
use config::Config; | use config::Config; | ||||
use tera::Tera; | use tera::Tera; | ||||
use front_matter::{SortBy, InsertAnchor}; | use front_matter::{SortBy, InsertAnchor}; | ||||
use content::{Page, sort_pages, populate_previous_and_next_pages}; | |||||
use content::{Page, sort_pages, populate_siblings}; | |||||
fn create_pages(number: usize, sort_by: SortBy) -> Vec<Page> { | fn create_pages(number: usize, sort_by: SortBy) -> Vec<Page> { | ||||
@@ -128,17 +128,17 @@ fn bench_sorting_order(b: &mut test::Bencher) { | |||||
} | } | ||||
#[bench] | #[bench] | ||||
fn bench_populate_previous_and_next_pages(b: &mut test::Bencher) { | |||||
fn bench_populate_siblings(b: &mut test::Bencher) { | |||||
let pages = create_pages(250, SortBy::Order); | let pages = create_pages(250, SortBy::Order); | ||||
let (sorted_pages, _) = sort_pages(pages, SortBy::Order); | let (sorted_pages, _) = sort_pages(pages, SortBy::Order); | ||||
b.iter(|| populate_previous_and_next_pages(&sorted_pages.clone())); | |||||
b.iter(|| populate_siblings(&sorted_pages.clone())); | |||||
} | } | ||||
#[bench] | #[bench] | ||||
fn bench_page_render_html(b: &mut test::Bencher) { | fn bench_page_render_html(b: &mut test::Bencher) { | ||||
let pages = create_pages(10, SortBy::Order); | let pages = create_pages(10, SortBy::Order); | ||||
let (mut sorted_pages, _) = sort_pages(pages, SortBy::Order); | let (mut sorted_pages, _) = sort_pages(pages, SortBy::Order); | ||||
sorted_pages = populate_previous_and_next_pages(&sorted_pages); | |||||
sorted_pages = populate_siblings(&sorted_pages); | |||||
let config = Config::default(); | let config = Config::default(); | ||||
let mut tera = Tera::default(); | let mut tera = Tera::default(); | ||||
@@ -26,4 +26,4 @@ mod sorting; | |||||
pub use file_info::FileInfo; | pub use file_info::FileInfo; | ||||
pub use page::Page; | pub use page::Page; | ||||
pub use section::Section; | pub use section::Section; | ||||
pub use sorting::{sort_pages, populate_previous_and_next_pages}; | |||||
pub use sorting::{sort_pages, populate_siblings}; |
@@ -53,7 +53,7 @@ pub fn sort_pages(pages: Vec<Page>, sort_by: SortBy) -> (Vec<Page>, Vec<Page>) { | |||||
/// Horribly inefficient way to set previous and next on each pages that skips drafts | /// Horribly inefficient way to set previous and next on each pages that skips drafts | ||||
/// So many clones | /// So many clones | ||||
pub fn populate_previous_and_next_pages(input: &[Page], sort_by: SortBy) -> Vec<Page> { | |||||
pub fn populate_siblings(input: &[Page], sort_by: SortBy) -> Vec<Page> { | |||||
let mut res = Vec::with_capacity(input.len()); | let mut res = Vec::with_capacity(input.len()); | ||||
// The input is already sorted | // The input is already sorted | ||||
@@ -140,7 +140,7 @@ pub fn populate_previous_and_next_pages(input: &[Page], sort_by: SortBy) -> Vec< | |||||
mod tests { | mod tests { | ||||
use front_matter::{PageFrontMatter, SortBy}; | use front_matter::{PageFrontMatter, SortBy}; | ||||
use page::Page; | use page::Page; | ||||
use super::{sort_pages, populate_previous_and_next_pages}; | |||||
use super::{sort_pages, populate_siblings}; | |||||
fn create_page_with_date(date: &str) -> Page { | fn create_page_with_date(date: &str) -> Page { | ||||
let mut front_matter = PageFrontMatter::default(); | let mut front_matter = PageFrontMatter::default(); | ||||
@@ -208,13 +208,13 @@ mod tests { | |||||
} | } | ||||
#[test] | #[test] | ||||
fn can_populate_previous_and_next_pages() { | |||||
fn can_populate_siblings() { | |||||
let input = vec![ | let input = vec![ | ||||
create_page_with_weight(1), | create_page_with_weight(1), | ||||
create_page_with_weight(2), | create_page_with_weight(2), | ||||
create_page_with_weight(3), | create_page_with_weight(3), | ||||
]; | ]; | ||||
let pages = populate_previous_and_next_pages(&input, SortBy::Weight); | |||||
let pages = populate_siblings(&input, SortBy::Weight); | |||||
assert!(pages[0].clone().lighter.is_none()); | assert!(pages[0].clone().lighter.is_none()); | ||||
assert!(pages[0].clone().heavier.is_some()); | assert!(pages[0].clone().heavier.is_some()); | ||||
@@ -36,7 +36,7 @@ use config::{Config, get_config}; | |||||
use utils::fs::{create_file, copy_directory, create_directory, ensure_directory_exists}; | use utils::fs::{create_file, copy_directory, create_directory, ensure_directory_exists}; | ||||
use utils::templates::{render_template, rewrite_theme_paths}; | use utils::templates::{render_template, rewrite_theme_paths}; | ||||
use utils::net::get_available_port; | use utils::net::get_available_port; | ||||
use content::{Page, Section, populate_previous_and_next_pages, sort_pages}; | |||||
use content::{Page, Section, populate_siblings, sort_pages}; | |||||
use templates::{GUTENBERG_TERA, global_fns, render_redirect_template}; | use templates::{GUTENBERG_TERA, global_fns, render_redirect_template}; | ||||
use front_matter::{SortBy, InsertAnchor}; | use front_matter::{SortBy, InsertAnchor}; | ||||
use taxonomies::{Taxonomy, find_taxonomies}; | use taxonomies::{Taxonomy, find_taxonomies}; | ||||
@@ -401,7 +401,7 @@ impl Site { | |||||
} | } | ||||
let pages = mem::replace(&mut section.pages, vec![]); | let pages = mem::replace(&mut section.pages, vec![]); | ||||
let (sorted_pages, cannot_be_sorted_pages) = sort_pages(pages, section.meta.sort_by); | let (sorted_pages, cannot_be_sorted_pages) = sort_pages(pages, section.meta.sort_by); | ||||
section.pages = populate_previous_and_next_pages(&sorted_pages, section.meta.sort_by); | |||||
section.pages = populate_siblings(&sorted_pages, section.meta.sort_by); | |||||
section.ignored_pages = cannot_be_sorted_pages; | section.ignored_pages = cannot_be_sorted_pages; | ||||
} | } | ||||
} | } | ||||