#static-site-generator #post #index #pages #educational #template #tags

bin+lib futhorc

A static site generator to learn Rust and to build my personal blog

14 releases

0.1.13 Feb 21, 2023
0.1.12 Feb 21, 2023
0.1.11 Jul 14, 2022
0.1.7 May 2, 2022
0.1.6 Apr 19, 2021

#215 in Template engine

GPL-3.0 license

2MB
1.5K SLoC

Contains (ELF exe/lib, 7MB) futhorc-amd64-linux-v0.1.13

Futhorc

Futhorc is an educational exercise to learn Rust while writing a static site generator.


lib.rs:

The library code for the futhorc static site generator. The architecture can be generally broken down into two distinct steps:

  1. Parsing posts from source files on disk (crate::post)
  2. Converting the posts into output files on disk (crate::write)

Of the two, the second step is the more involved. It is itself composed of three distinct sub-steps:

  1. Building post pages
  2. Building index pages
  3. Rendering all pages to disk

Again here the second sub-step is the more involved, because we need to create groups of index pages for each tag and another group for the empty tag which corresponds to all posts. A group of index pages is referred to as an "index", and each index is paginated--converted into groups of pages based on a configurable number of posts per index page.

The third substep is pretty straight-forward: for each page, apply the template (either the post template or the index template) and write the result to disk.

Dependencies

~12MB
~310K SLoC