Packages
fermo
0.18.1
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
lib/fermo.ex
defmodule Fermo do
@moduledoc """
Fermo provides the main entry points for configuring a project
"""
@build Application.compile_env(:fermo, :build, Fermo.Build)
@pagination Application.compile_env(:fermo, :pagination, Fermo.Pagination)
@doc false
defmacro __using__(opts \\ %{}) do
quote do
require Fermo
@before_compile Fermo
Module.register_attribute __MODULE__, :config, persist: true
@config unquote(opts)
import I18n
end
end
@doc false
defmacro __before_compile__(_env) do
quote do
def initial_config() do
hd(__MODULE__.__info__(:attributes)[:config])
|> Fermo.Config.initial()
end
end
end
@doc """
Add a page to the configuration
pages are the main way to add dynamic pages to Fermo.
## Examples
page(
config,
"/templates/home.html.slim",
"/index.html",
%{id: "home", path: "/"}
)
"""
def page(config, template, filename, params \\ nil) do
Fermo.Config.add_page!(config, template, filename, params)
end
def paginate(config, template, options \\ %{}, context \\ %{}, fun \\ nil) do
@pagination.paginate(config, template, options, context, fun)
end
def build(config) do
@build.run(config)
end
end