Packages
fermo
0.13.9
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]
def add(%{i18n: _i18n} = config) do
root_locale = root_locale(config)
locales = config.i18n
exclude = Map.get(config, :exclude, []) ++ ["localizable/*"]
config = put_in(config, [:exclude], exclude)
templates = File.cd!(source_path(), fn ->
Path.wildcard("**/*.slim")
end)
Enum.reduce(templates, config, fn (template, config) ->
if String.starts_with?(template, "localizable/") do
target = String.replace_prefix(template, "localizable/", "")
target = Fermo.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.add_page(config, template, localized_target, %{}, %{locale: locale})
end)
else
config
end
end)
end
def add(config), do: config
end