Crate shtola

source ·
Expand description

With Shtola, you can build your own static site generators easily. All that Shtola itself does is read files and frontmatter, run them through a bunch of user-provided plugins, and write the result back to disk.

As a demonstration of Shtola’s basic piping feature, see this example:

use shtola::Shtola;

let mut m = Shtola::new();
m.source("../fixtures/simple");
m.destination("../fixtures/dest/doctest_example");
m.clean(true);
m.build().unwrap();

A “plugin” is just a boxed function that takes a RefMut to an IR (intermediate representation) struct. The plugin may modify the IR freely:

use shtola::{Plugin, ShFile, RefIR};

fn plugin() -> Plugin {
  Box::new(|mut ir: RefIR| {
    ir.files.insert("myFile".into(), ShFile::empty());
  })
}

Re-exports

Modules

Structs

  • Configuration struct.
  • A hash map implemented with quadratic probing and SIMD lookup.
  • The intermediate representation that’s passed to plugins. Includes global metadata, the files with frontmatter and the global config.
  • Shtola’s file representation, with frontmatter included.
  • The main library struct.
  • A middleware chain.

Type Definitions

  • Convenience type to return from plugin functions.
  • Convenience type for a RefMut<IR>.