1use crate::cobalt_model::pagination::PaginationConfig;
2use crate::document::Document;
3
4use super::{Result, paginator};
5use paginator::Paginator;
6
7pub(crate) fn create_all_paginators(
8 all_posts: &[&liquid::model::Value],
9 doc: &Document,
10 config: &PaginationConfig,
11 index_title: Option<&liquid::model::Value>,
12) -> Result<Vec<Paginator>> {
13 let total_pages = all_posts.len();
14 let total_indexes = (total_pages as f32 / config.per_page as f32).ceil() as usize;
17
18 if total_pages == 0 {
19 return Ok(vec![paginator::create_paginator(
20 0,
21 total_indexes,
22 total_pages,
23 config,
24 doc,
25 &[],
26 index_title,
27 )?]);
28 }
29
30 let paginators: Result<Vec<_>> = all_posts
31 .chunks(config.per_page as usize)
32 .enumerate()
33 .map(|(i, chunk)| {
34 paginator::create_paginator(
35 i,
36 total_indexes,
37 total_pages,
38 config,
39 doc,
40 chunk,
41 index_title,
42 )
43 })
44 .collect();
45 paginators
46}