Packages
tz_extra
0.15.1
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(%Ecto.Changeset{} = changeset, field, opts \\ []) when is_atom(field) do
Ecto.Changeset.validate_change changeset, field, {:time_zone, []}, fn _field, value ->
if Enum.member?(TzExtra.time_zone_identifiers(opts), value),
do: [],
else: [{field, {message(opts, "is not a valid time zone identifier"), [validation: :time_zone]}}]
end
end
def validate_iso_country_code(%Ecto.Changeset{} = changeset, field, opts \\ []) when is_atom(field) do
Ecto.Changeset.validate_change changeset, field, {: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 ISO country code"), [validation: :country_code]}}]
end
end
defp message(opts, key \\ :message, default) do
Keyword.get(opts, key, default)
end
end
end