44 lines
1016 B
Rust
44 lines
1016 B
Rust
use super::pagination::{render_paginated, PaginatableTemplate, PaginationInfo};
|
|
use super::posts::{HtmlContent, Post};
|
|
use super::util::templates::{filters, TemplateCommon};
|
|
use askama::Template;
|
|
|
|
pub fn generate(posts: &[&Post<HtmlContent>]) -> Result<(), std::io::Error> {
|
|
render_paginated(
|
|
&HomeTemplate {
|
|
posts: &[],
|
|
pagination_info: Default::default(),
|
|
},
|
|
posts,
|
|
"/",
|
|
)
|
|
}
|
|
|
|
#[derive(Template)]
|
|
#[template(path = "index.html")]
|
|
struct HomeTemplate<'a> {
|
|
posts: &'a [&'a Post<HtmlContent>],
|
|
pagination_info: PaginationInfo,
|
|
}
|
|
|
|
impl<'a> TemplateCommon for HomeTemplate<'a> {}
|
|
|
|
impl<'a> PaginatableTemplate<'a> for HomeTemplate<'a> {
|
|
fn with_posts(
|
|
&'a self,
|
|
posts: &'a [&'a Post<HtmlContent>],
|
|
pagination_info: PaginationInfo,
|
|
) -> Self {
|
|
Self {
|
|
posts,
|
|
pagination_info,
|
|
}
|
|
}
|
|
}
|
|
|
|
impl<'a> HomeTemplate<'a> {
|
|
fn permalink(&self) -> &'static str {
|
|
"/"
|
|
}
|
|
}
|