diff --git a/src/lib.rs b/src/lib.rs index e4cb0cc..1ed22e1 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -114,9 +114,11 @@ pub fn run(config: Config) -> Result<()> { )] let total_pages = (f64::from(total_posts) / f64::from(page_size)).ceil() as usize; for (page, page_posts) in posts_to_render.chunks(page_size.try_into()?).enumerate() { - render::page(page_posts, page, total_pages)?; + render::listing(page_posts, page, total_pages)?; } + render::index()?; + Ok(()) } diff --git a/src/render.rs b/src/render.rs index c219b0d..b32890a 100644 --- a/src/render.rs +++ b/src/render.rs @@ -17,8 +17,8 @@ pub struct Post { } #[derive(Template)] -#[template(path = "index.jinja")] -struct IndexTemplate<'a> { +#[template(path = "listing.jinja")] +struct ListingTemplate<'a> { posts: &'a [Post], page: usize, last_page: usize, @@ -26,11 +26,11 @@ struct IndexTemplate<'a> { previous_page: Option, } -pub fn page(posts: &[Post], page: usize, total_pages: usize) -> Result<()> { +pub fn listing(posts: &[Post], page: usize, total_pages: usize) -> Result<()> { let last_page = total_pages - 1; let next_page = (page < last_page).then(|| page + 1); let previous_page = (page > 0).then(|| page - 1); - let template = IndexTemplate { + let template = ListingTemplate { posts, page, last_page, @@ -60,3 +60,16 @@ pub fn post(post: &Post) -> Result<()> { Ok(()) } + +#[derive(Template)] +#[template(path = "index.jinja")] +struct IndexTemplate; + +pub fn index() -> Result<()> { + let template = IndexTemplate {}; + + let output = template.render()?; + std::fs::write("output/index.html", output)?; + + Ok(()) +} diff --git a/templates/index.jinja b/templates/index.jinja index 6f3ee20..1c7d79f 100644 --- a/templates/index.jinja +++ b/templates/index.jinja @@ -1,46 +1,4 @@ {% extends "layout.jinja" %} - -{% block content %} - -{% include "nav.jinja" %} - -{% for post in posts %} -
- -

{{ post.title }}

-
-

{% include "post_text.jinja" %}

-

- {{ post.real_num_comments }} - Answers - {{post.created_at.format("%F")}} -

-
-{% endfor %} - -
- {% if let Some(previous_page) = previous_page %} - - {% else %} - - {% endif %} - - {{page}} - / - {{last_page}} - - {% if let Some(next_page) = next_page %} - - {% else %} - - {% endif %} - -
- -{% if page > 1 %} -

- Back to start -

-{% endif %} - +{% block head %} + {% endblock %} \ No newline at end of file diff --git a/templates/layout.jinja b/templates/layout.jinja index beccec8..b2cda55 100644 --- a/templates/layout.jinja +++ b/templates/layout.jinja @@ -6,6 +6,7 @@ AskHistorians Archive + {% block head %}{% endblock %} diff --git a/templates/listing.jinja b/templates/listing.jinja new file mode 100644 index 0000000..6f3ee20 --- /dev/null +++ b/templates/listing.jinja @@ -0,0 +1,46 @@ +{% extends "layout.jinja" %} + +{% block content %} + +{% include "nav.jinja" %} + +{% for post in posts %} +
+ +

{{ post.title }}

+
+

{% include "post_text.jinja" %}

+

+ {{ post.real_num_comments }} + Answers + {{post.created_at.format("%F")}} +

+
+{% endfor %} + +
+ {% if let Some(previous_page) = previous_page %} + + {% else %} + + {% endif %} + + {{page}} + / + {{last_page}} + + {% if let Some(next_page) = next_page %} + + {% else %} + + {% endif %} + +
+ +{% if page > 1 %} +

+ Back to start +

+{% endif %} + +{% endblock %} \ No newline at end of file