25
1
mirror of https://github.com/processone/ejabberd.git synced 2024-11-28 16:34:13 +01:00
xmpp.chapril.org-ejabberd/lib/ejabberd/config/validator/validator_attrs.ex

30 lines
879 B
Elixir

defmodule Ejabberd.Config.Validator.Attrs do
@moduledoc """
Validator module used to validate attributes.
"""
import Ejabberd.Config.ValidatorUtility
alias Ejabberd.Config.Attr
alias Ejabberd.Config.EjabberdModule
# TODO: Duplicated from validator.ex !!!
@type mod_validation :: {[EjabberdModule.t], EjabberdModule.t, map}
@doc """
Given a module (with the form used for validation)
it runs Attr.validate/1 on each attribute and
returns the validation tuple with the errors updated, if found.
"""
@spec validate(mod_validation) :: mod_validation
def validate({modules, mod, errors}) do
errors = Enum.reduce mod.attrs, errors, fn(attr, err) ->
case Attr.validate([attr]) do
[{:ok, _attr}] -> err
[{:error, attr, cause}] -> put_error(err, :attribute, {attr, cause})
end
end
{modules, mod, errors}
end
end