Packages
fermo
0.16.2
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.get_env(:fermo, :build, Fermo.Build)
@pagination Application.get_env(:fermo, :pagination, Fermo.Pagination)
def start(_start_type, _args \\ []) do
{:ok, _pid} = Fermo.Assets.start_link()
{:ok, _pid} = I18n.start_link()
{:ok, self()}
end
@doc false
defmacro __using__(opts \\ %{}) do
quote do
require Fermo
@before_compile Fermo
Module.register_attribute __MODULE__, :config, persist: true
@config unquote(opts)
import Fermo.Assets
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
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