24 lines
662 B
Elixir
24 lines
662 B
Elixir
defmodule LabelmakerWeb.Tools do
|
|
alias LabelmakerWeb.Constants
|
|
|
|
def process_parameters(parameters) do
|
|
parameters =
|
|
parameters
|
|
|> Map.take(Constants.permitted_keys())
|
|
|> Map.new(fn {k, v} -> {String.to_atom(k), v} end)
|
|
|> Enum.filter(fn {k, v} ->
|
|
case k do
|
|
:color -> v in Constants.colors()
|
|
:font -> v in Constants.fonts()
|
|
:label -> String.length(v) <= Constants.max_label_length()
|
|
:outline -> v in Constants.outlines()
|
|
:size -> v in Constants.sizes()
|
|
_ -> true
|
|
end
|
|
end)
|
|
|> Map.new()
|
|
|
|
Map.merge(Constants.defaults(), parameters)
|
|
end
|
|
end
|