Packages
fermo
0.14.8
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/localizable.ex
defmodule Fermo.Localizable do
import Fermo.I18n, only: [root_locale: 1]
import Mix.Fermo.Paths, only: [source_path: 0]
@callback add(map()) :: map()
def add(%{i18n: i18n} = config) do
root_locale = root_locale(config)
locales = i18n
exclude = Map.get(config, :exclude, []) ++ ["localizable/*"]
config = put_in(config, [:exclude], exclude)
templates = File.cd!(source_path(), fn ->
Path.wildcard("localizable/**/*.slim")
end)
Enum.reduce(templates, config, fn (template, config) ->
target = String.replace_prefix(template, "localizable/", "")
target = Fermo.Paths.template_to_target(target, as_index_html: true)
Enum.reduce(locales, config, fn (locale, config) ->
localized_target = if locale == root_locale do
"/#{target}"
else
"/#{locale}/#{target}"
end
Fermo.Config.add_page(config, template, localized_target, %{locale: locale})
end)
end)
end
def add(config), do: config
end