Current section

Files

Jump to
tableau lib tableau config.ex
Raw

lib/tableau/config.ex

defmodule Tableau.Config do
@moduledoc false
import Schematic
defstruct [
:url,
base_path: "",
include_dir: "extra",
out_dir: "_site",
timezone: "Etc/UTC",
reload_log: false,
slug: [],
converters: [md: Tableau.MDExConverter],
markdown: [mdex: []]
]
def new(config) do
unify(schematic(), config)
end
def get do
Tableau.Config.new(Map.new(Application.get_env(:tableau, :config, %{})))
end
defp schematic do
schema(
__MODULE__,
%{
optional(:include_dir) => str(),
optional(:out_dir) => str(),
optional(:timezone) => str(),
optional(:reload_log) => bool(),
optional(:converters) => keyword(values: atom()),
optional(:markdown) => keyword(values: list()),
optional(:slug) =>
keyword(%{
optional(:separator) => oneof([str(), int()]),
optional(:lowercase) => bool(),
optional(:truncate) => int(),
optional(:ignore) => oneof([str(), list(oneof([str(), int()]))])
}),
optional(:base_path) => str(),
url: str()
},
convert: false
)
end
end