Packages
fermo
0.16.5
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
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]
if page[:live] do
page_path = context.page.path
template_source_path = apply(unquote(module), :template_source_path, [])
{:ok} = Fermo.Live.Dependencies.add_page_dependency(page_path, :template, template_source_path)
end
opts = unquote(opts) || []
po = unquote(param_overrides)
param_overrides = if po, do: po, else: %{}
content = opts[:do]
params = Map.merge(template_params, param_overrides)
p = if content do
put_in(params, [:content], content)
else
params
end
Fermo.Template.render_template(unquote(module), unquote(path), page, p)
end
end
end