Packages
fermo
0.2.0
0.20.1
0.20.0
0.19.2
0.19.1
0.19.0
0.18.1
0.18.0
0.17.1
0.17.0
0.16.7
0.16.6
0.16.5
0.16.4
0.16.3
0.16.2
0.16.1
0.16.0
0.15.0
0.14.9
0.14.8
0.14.7
0.14.6
0.14.5
0.14.4
0.14.3
0.14.2
0.14.1
0.14.0
0.13.9
0.13.8
0.13.7
0.13.6
0.13.5
0.13.4
0.13.2
0.13.1
0.13.0
0.12.1
0.12.0
0.11.1
0.11.0
0.10.0
0.9.1
0.9.0
0.8.4
0.8.3
0.8.2
0.8.1
0.8.0
0.7.1
0.7.0
0.6.4
0.6.3
0.6.2
0.6.1
0.6.0
0.5.1
0.5.0
0.4.0
0.3.0
0.2.4
0.2.2
0.2.1
0.2.0
0.1.8
0.1.7
0.1.6
0.1.5
0.1.4
0.1.3
0.1.2
0.1.1
0.1.0
A static site generator
Current section
Files
Jump to
Current section
Files
README.md
# Fermo
**A static website generator written in Elixir**
Because the world needs another static stite generator,
especially one in Elixir!
# Usage
Create an Elixir project.
Add the dependency to `mix.exs`:
```elixir
{:fermo, "~> 0.1.5"}
```
Get dependencies:
```shell
$ mix deps.get
```
Create `lib/{{project name}}.ex`:
```elixir
defmodule MyProject do
@moduledoc """
Documentation for MyProject.
"""
use Fermo, %{
exclude: ["templates/*", "layouts/*", "javascripts/*", "stylesheets/*"],
i18n: [:it, :en]
}
def build do
config = config()
Fermo.build(config)
end
end
```
Build the project:
```shell
$ mix fermo.build
```
# Approach
When a Fermo project is compiled, all pages (single pages, proxy templates
and partials) are located.
Pages which have a special function (e.g. templates and partials) are filtered
out and remaining pages are queued for conversion to HTML.
# Defaults
Fermo was build to mimic the behaviour of Middleman, so it's defaults
tend to be the same its progenitor.
A number of helper methods are provided (e.g. `javascript_include_tag`) to
allow easy porting of Middleman projects.
# Templates
Currently, Fermo only supports SLIM templates for HTML.
## SLIM in Elixir
There are some differences from other SLIM dialects:
* `if` and `Enum.map` should be preceded by `=`.
See the documentation here: ....
## Parameters
Top level pages are called with the following parameters:
* `params` - the parameters passed to the template or partial,
* `context` - hash of contextual information.
### Context
* `:module` - the module which called `Fermo.build/0`,
* `:template` - the top-level page or partial template pathname, with path
relative to the source root,
* `:page` - see below.
### Page
Information about the top-level page.
* `:template` - the template path and name relative to the source root,
* `:target` - the path of the generated file,
* `:params` - the parameters passed to the template,
* `:options` - other options, e.g. the locale.
## Partials
Partials are also called with the same 2 parameters, but the values in `:page`
are those of the top-level page, not the partial itself.
# Assets