# 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`:

{:fermo, "~> 0.0.1"}

Get dependencies:

$ mix deps.get

Create `lib/{{project name}}.ex`:

defmodule MyProject do
  @moduledoc """
  Documentation for MyProject.

  use Fermo, %{
    exclude: ["templates/*", "layouts/*", "javascripts/*", "stylesheets/*"],
    i18n: [:it, :en]

  def build do
    config = config()

Build the project:

$ mix

# 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 `` 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 ``,
* `: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