Packages
tz_extra
0.27.0
0.45.0
0.44.0
0.43.0
0.42.0
0.41.0
0.40.0
0.39.0
0.38.0
0.37.0
0.36.0
0.35.0
0.34.0
0.33.0
0.32.0
0.31.0
0.30.0
0.29.0
0.28.0
0.27.0
0.26.0
0.25.0
0.24.0
0.23.0
0.22.1
0.22.0
0.21.1
0.21.0
0.20.1
0.20.0
0.17.0
0.16.7
0.16.6
0.16.5
0.16.3
0.16.2
0.16.1
0.16.0
0.15.1
0.15.0
0.8.0
0.7.0
0.6.0
0.5.0
0.4.0
0.3.0
0.2.0
0.1.0
Time zone-related utilities
Current section
Files
Jump to
Current section
Files
lib/changeset.ex
if Code.ensure_loaded?(Ecto.Changeset) do
defmodule TzExtra.Changeset do
require TzExtra.Compiler
def validate_time_zone_identifier(%Ecto.Changeset{} = changeset, field, opts \\ [])
when is_atom(field) do
opts =
opts
|> Keyword.put(:include_aliases, Keyword.get(opts, :allow_alias, false))
Ecto.Changeset.validate_change(changeset, field, :time_zone_identifier, fn _field, value ->
if Enum.member?(TzExtra.time_zone_identifiers(opts), value),
do: [],
else: [
{field,
{message(opts, "is not a valid time zone"), [validation: :time_zone_identifier]}}
]
end)
end
def validate_civil_time_zone_identifier(%Ecto.Changeset{} = changeset, field, opts \\ [])
when is_atom(field) do
opts =
opts
|> Keyword.put(:include_aliases, Keyword.get(opts, :allow_alias, false))
Ecto.Changeset.validate_change(changeset, field, :civil_time_zone_identifier, fn _field,
value ->
if Enum.member?(TzExtra.civil_time_zone_identifiers(opts), value),
do: [],
else: [
{field,
{message(opts, "is not a valid time zone"),
[validation: :civil_time_zone_identifier]}}
]
end)
end
def validate_iso_country_code(%Ecto.Changeset{} = changeset, field, opts \\ [])
when is_atom(field) do
Ecto.Changeset.validate_change(changeset, field, :iso_country_code, fn _field, value ->
if Enum.any?(TzExtra.countries(), fn %{code: country_code} -> country_code == value end),
do: [],
else: [
{field,
{message(opts, "is not a valid country code"), [validation: :iso_country_code]}}
]
end)
end
defp message(opts, key \\ :message, default) do
Keyword.get(opts, key, default)
end
end
end