Packages
tzdata
0.5.8
1.1.4
1.1.3
1.1.2
1.1.1
1.1.0
1.0.5
1.0.4
1.0.3
1.0.2
1.0.1
1.0.0
1.0.0-rc.1
1.0.0-rc.0
0.5.22
0.5.21
0.5.20
0.5.19
0.5.18
0.5.17
0.5.16
0.5.15
0.5.14
0.5.13
0.5.12
0.5.11
0.5.10
0.5.9
0.5.8
0.5.7
0.5.6
0.5.5
0.5.4
0.5.3
0.5.2
0.5.1
0.5.0
0.1.201805
0.1.201605
0.1.201603
0.1.201601
0.1.8
0.1.7
0.1.6
0.1.5
0.1.4
0.1.3
0.1.2
0.1.1
0.1.0
0.0.2
0.0.1
Tzdata is a parser and library for the tz database.
Current section
Files
Jump to
Current section
Files
lib/tzdata/release_reader.ex
defmodule Tzdata.ReleaseReader do
def rules, do: simple_lookup(:rules) |> hd |> elem(1)
def zones, do: simple_lookup(:zones) |> hd |> elem(1)
def links, do: simple_lookup(:links) |> hd |> elem(1)
def zone_list, do: simple_lookup(:zone_list) |> hd |> elem(1)
def link_list, do: simple_lookup(:link_list) |> hd |> elem(1)
def zone_and_link_list, do: simple_lookup(:zone_and_link_list) |> hd |> elem(1)
def archive_content_length, do: simple_lookup(:archive_content_length) |> hd |> elem(1)
def release_version, do: simple_lookup(:release_version) |> hd |> elem(1)
def leap_sec_data, do: simple_lookup(:leap_sec_data) |> hd |> elem(1)
def by_group, do: simple_lookup(:by_group) |> hd |> elem(1)
defp simple_lookup(key) do
:ets.lookup(current_release_from_table|>table_name_for_release_name, key)
end
def zone(zone_name) do
{:ok, zones[zone_name]}
end
def rules_for_name(rules_name) do
{:ok, rules[rules_name]}
end
def periods_for_zone_or_link(zone) do
if Enum.member?(zone_list, zone) do
{:ok, do_periods_for_zone(zone)}
else
case Enum.member?(link_list, zone) do
true -> periods_for_zone_or_link(links[zone])
_ -> {:error, :not_found}
end
end
end
defp do_periods_for_zone(zone) do
periods = lookup_periods_for_zone(zone)
if length(periods) > 0 do
periods |> hd |> elem(1)
end
end
defp lookup_periods_for_zone(zone) when is_binary(zone), do: simple_lookup(String.to_atom zone)
defp lookup_periods_for_zone(_), do: []
defp current_release_from_table do
:ets.lookup(:tzdata_current_release, :release_version) |> hd |> elem(1)
end
defp table_name_for_release_name(release_name) do
"tzdata_rel_#{release_name}" |> String.to_atom
end
end