Packages
fermo
0.6.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/partial.ex
defmodule Fermo.Partial do
import Fermo.Naming
import Mix.Fermo.Paths
defmacro partial(path, param_overrides \\ nil, opts \\ nil) do
module =
path
|> Mix.Fermo.Paths.absolute_to_source()
|> Fermo.Naming.source_path_to_module()
quote do
template_params = var!(params) || %{}
context = var!(context)
page = context[:page]
opts = unquote(opts) || []
param_overrides = unquote(param_overrides) || %{}
content = opts[:do]
params = Map.merge(template_params, param_overrides)
p = if content do
put_in(params, [:content], content)
else
params || %{}
end
Fermo.render_template(unquote(module), unquote(path), page, p)
end
end
end