Skip to content

Commit ca7cd5a

Browse files
committed
Update to CLDR 48 data
1 parent 4766acb commit ca7cd5a

File tree

5 files changed

+35
-27
lines changed

5 files changed

+35
-27
lines changed

CHANGELOG.md

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,8 +10,12 @@ This is the changelog for Cldr Calendars v2.4.0 released on _____, 2025. For ol
1010

1111
* Fix `year/1`, `month/2` and `days_in_month/2` for Julian calendars.
1212

13+
* CLDR 48 fixes the dates for some Japanese eras.
14+
1315
### Enhancements
1416

17+
* Use [CLDR 48](https://cldr.unicode.org/downloads/cldr-48) calendar data. The primary change for calendars is to the era dates for the Japanese calendar.
18+
1519
* Adds `use Cldr.Calendar.Julian, new_year_starting_month_and_day: {month_of_year, day_of_month}` to allow modelling Julian calendars that don't start on January 1st.
1620

1721
* Adds `Cldr.Calendar.convert/2` which converts either a date or a date range to another calendar.

lib/cldr/calendar/era.ex

Lines changed: 22 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -45,7 +45,7 @@ defmodule Cldr.Calendar.Era do
4545

4646
@doc false
4747
def define_era_module(calendar_module) do
48-
if function_exported?(calendar_module, :cldr_calendar_type, 0) &&
48+
if Cldr.Code.ensure_compiled?(calendar_module) && function_exported?(calendar_module, :cldr_calendar_type, 0) &&
4949
!Code.ensure_loaded?(era_module(calendar_module.cldr_calendar_type())) do
5050
cldr_calendar = calendar_module.cldr_calendar_type()
5151
era_module = era_module(cldr_calendar)
@@ -97,45 +97,45 @@ defmodule Cldr.Calendar.Era do
9797
@doc false
9898
def eras_to_iso_days(eras, :japanese, _calendar) do
9999
Enum.map(eras, fn
100-
[era, %{start: [1504 = year, 2 = month, 30]}] ->
101-
[era, start: Cldr.Calendar.Gregorian.date_to_iso_days(year, month, 29), year: year]
100+
[era, %{start: [1504 = year, 2 = month, 30]} = span] ->
101+
[era, start: Cldr.Calendar.Gregorian.date_to_iso_days(year, month, 29), year: year, code: span[:code]]
102102

103-
[era, %{start: [1624 = year, 2 = month, 30]}] ->
104-
[era, start: Cldr.Calendar.Gregorian.date_to_iso_days(year, month, 28), year: year]
103+
[era, %{start: [1624 = year, 2 = month, 30]} = span] ->
104+
[era, start: Cldr.Calendar.Gregorian.date_to_iso_days(year, month, 28), year: year, code: span[:code]]
105105

106-
[era, %{start: [1501 = year, 2 = month, 29]}] ->
107-
[era, start: Cldr.Calendar.Gregorian.date_to_iso_days(year, month, 28), year: year]
106+
[era, %{start: [1501 = year, 2 = month, 29]} = span] ->
107+
[era, start: Cldr.Calendar.Gregorian.date_to_iso_days(year, month, 28), year: year, code: span[:code]]
108108

109-
[era, %{start: [1278 = year, 2 = month, 29]}] ->
110-
[era, start: Cldr.Calendar.Gregorian.date_to_iso_days(year, month, 28), year: year]
109+
[era, %{start: [1278 = year, 2 = month, 29]} = span] ->
110+
[era, start: Cldr.Calendar.Gregorian.date_to_iso_days(year, month, 28), year: year, code: span[:code]]
111111

112-
[era, %{start: [year, month, day]}] ->
113-
[era, start: Cldr.Calendar.Gregorian.date_to_iso_days(year, month, day), year: year]
112+
[era, %{start: [year, month, day]} = span] ->
113+
[era, start: Cldr.Calendar.Gregorian.date_to_iso_days(year, month, day), year: year, code: span[:code]]
114114

115-
[era, %{end: [year, month, day]}] ->
116-
[era, end: Cldr.Calendar.Gregorian.date_to_iso_days(year, month, day), year: year]
115+
[era, %{end: [year, month, day]} = span] ->
116+
[era, end: Cldr.Calendar.Gregorian.date_to_iso_days(year, month, day), year: year, code: span[:code]]
117117
end)
118118
end
119119

120120
def eras_to_iso_days(eras, cldr_calendar, calendar)
121121
when cldr_calendar in @eras_in_gregorian_year do
122122
Enum.map(eras, fn
123-
[era, %{start: [year, month, day]}] ->
124-
[era, start: calendar.date_to_iso_days(year, month, day), year: year]
123+
[era, %{start: [year, month, day]} = span] ->
124+
[era, start: calendar.date_to_iso_days(year, month, day), year: year, code: span[:code]]
125125

126-
[era, %{end: [year, month, day]}] ->
127-
[era, end: calendar.date_to_iso_days(year, month, day), year: year]
126+
[era, %{end: [year, month, day]} = span] ->
127+
[era, end: calendar.date_to_iso_days(year, month, day), year: year, code: span[:code]]
128128
end)
129129
end
130130

131131
def eras_to_iso_days(eras, cldr_calendar, _calendar)
132132
when cldr_calendar in @eras_in_julian_calendar do
133133
Enum.map(eras, fn
134-
[era, %{start: [year, month, day]}] ->
135-
[era, start: Cldr.Calendar.Julian.date_to_iso_days(year, month, day), year: year]
134+
[era, %{start: [year, month, day]} = span] ->
135+
[era, start: Cldr.Calendar.Julian.date_to_iso_days(year, month, day), year: year, code: span[:code]]
136136

137-
[era, %{end: [year, month, day]}] ->
138-
[era, end: Cldr.Calendar.Julian.date_to_iso_days(year, month, day), year: year]
137+
[era, %{end: [year, month, day]} = span] ->
138+
[era, end: Cldr.Calendar.Julian.date_to_iso_days(year, month, day), year: year, code: span[:code]]
139139
end)
140140
end
141141

@@ -190,7 +190,7 @@ defmodule Cldr.Calendar.Era do
190190
end
191191

192192
defp function_body(eras) do
193-
for [era, {position, date}, {:year, era_year}] <- eras do
193+
for [era, {position, date}, {:year, era_year}, {:code, _code}] <- eras do
194194
case position do
195195
:start ->
196196
quote do

mix.exs

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -68,7 +68,10 @@ defmodule Cldr.Calendar.MixProject do
6868

6969
defp deps do
7070
[
71-
{:ex_cldr_numbers, "~> 2.34"},
71+
{:ex_cldr, github: "elixir-cldr/cldr48", override: true},
72+
{:ex_cldr_numbers, github: "elixir-cldr/cldr_numbers", branch: "cldr48", override: true},
73+
74+
# {:ex_cldr_numbers, "~> 2.34"},
7275
{:ex_cldr_units, "~> 3.18", optional: true},
7376
{:ex_cldr_lists, "~> 2.10", optional: true},
7477
{:tz, "~> 0.9", optional: true, only: [:dev, :test]},

mix.lock

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,18 +1,18 @@
11
%{
22
"benchee": {:hex, :benchee, "1.3.1", "c786e6a76321121a44229dde3988fc772bca73ea75170a73fd5f4ddf1af95ccf", [:mix], [{:deep_merge, "~> 1.0", [hex: :deep_merge, repo: "hexpm", optional: false]}, {:statistex, "~> 1.0", [hex: :statistex, repo: "hexpm", optional: false]}, {:table, "~> 0.1.0", [hex: :table, repo: "hexpm", optional: true]}], "hexpm", "76224c58ea1d0391c8309a8ecbfe27d71062878f59bd41a390266bf4ac1cc56d"},
33
"calendar_interval": {:hex, :calendar_interval, "0.2.0", "2b253b1e37ee1d4344639a3cbfb12abd0e996e4a8181537eb33c3e93fdfaffd9", [:mix], [], "hexpm", "c13d5e0108e61808a38f622987e1c5e881d96d28945213d3efe6dd06c28ba7b0"},
4-
"cldr_utils": {:hex, :cldr_utils, "2.28.3", "d0ac5ed25913349dfaca8b7fe14722d588d8ccfa3e335b0510c7cc3f3c54d4e6", [:mix], [{:castore, "~> 0.1 or ~> 1.0", [hex: :castore, repo: "hexpm", optional: true]}, {:certifi, "~> 2.5", [hex: :certifi, repo: "hexpm", optional: true]}, {:decimal, "~> 1.9 or ~> 2.0", [hex: :decimal, repo: "hexpm", optional: false]}], "hexpm", "40083cd9a5d187f12d675cfeeb39285f0d43e7b7f2143765161b72205d57ffb5"},
4+
"cldr_utils": {:hex, :cldr_utils, "2.29.0", "b64e01c8712ed06db4053302e7e3f6d57fd792cb40dd03144978e663ee40b018", [:mix], [{:castore, "~> 0.1 or ~> 1.0", [hex: :castore, repo: "hexpm", optional: true]}, {:certifi, "~> 2.5", [hex: :certifi, repo: "hexpm", optional: true]}, {:decimal, "~> 1.9 or ~> 2.0", [hex: :decimal, repo: "hexpm", optional: false]}], "hexpm", "d21f6a1937461e3b0634e53159d64b07852c54069304fb7aef666aeb46ba5175"},
55
"decimal": {:hex, :decimal, "2.3.0", "3ad6255aa77b4a3c4f818171b12d237500e63525c2fd056699967a3e7ea20f62", [:mix], [], "hexpm", "a4d66355cb29cb47c3cf30e71329e58361cfcb37c34235ef3bf1d7bf3773aeac"},
66
"deep_merge": {:hex, :deep_merge, "1.0.0", "b4aa1a0d1acac393bdf38b2291af38cb1d4a52806cf7a4906f718e1feb5ee961", [:mix], [], "hexpm", "ce708e5f094b9cd4e8f2be4f00d2f4250c4095be93f8cd6d018c753894885430"},
77
"dialyxir": {:hex, :dialyxir, "1.4.6", "7cca478334bf8307e968664343cbdb432ee95b4b68a9cba95bdabb0ad5bdfd9a", [:mix], [{:erlex, ">= 0.2.7", [hex: :erlex, repo: "hexpm", optional: false]}], "hexpm", "8cf5615c5cd4c2da6c501faae642839c8405b49f8aa057ad4ae401cb808ef64d"},
88
"digital_token": {:hex, :digital_token, "1.0.0", "454a4444061943f7349a51ef74b7fb1ebd19e6a94f43ef711f7dae88c09347df", [:mix], [{:cldr_utils, "~> 2.17", [hex: :cldr_utils, repo: "hexpm", optional: false]}, {:jason, "~> 1.0", [hex: :jason, repo: "hexpm", optional: true]}], "hexpm", "8ed6f5a8c2fa7b07147b9963db506a1b4c7475d9afca6492136535b064c9e9e6"},
99
"earmark_parser": {:hex, :earmark_parser, "1.4.44", "f20830dd6b5c77afe2b063777ddbbff09f9759396500cdbe7523efd58d7a339c", [:mix], [], "hexpm", "4778ac752b4701a5599215f7030989c989ffdc4f6df457c5f36938cc2d2a2750"},
1010
"erlex": {:hex, :erlex, "0.2.7", "810e8725f96ab74d17aac676e748627a07bc87eb950d2b83acd29dc047a30595", [:mix], [], "hexpm", "3ed95f79d1a844c3f6bf0cea61e0d5612a42ce56da9c03f01df538685365efb0"},
11-
"ex_cldr": {:hex, :ex_cldr, "2.43.1", "5c42509c588f82fc018d1e3bc992a4d891a02271603c5cb85e5e370a5139928f", [:mix], [{:cldr_utils, "~> 2.28", [hex: :cldr_utils, repo: "hexpm", optional: false]}, {:decimal, "~> 1.6 or ~> 2.0", [hex: :decimal, repo: "hexpm", optional: false]}, {:gettext, "~> 0.19", [hex: :gettext, repo: "hexpm", optional: true]}, {:jason, "~> 1.0", [hex: :jason, repo: "hexpm", optional: true]}, {:nimble_parsec, "~> 0.5 or ~> 1.0", [hex: :nimble_parsec, repo: "hexpm", optional: true]}], "hexpm", "d4c4f0d24da80923a78c47fa767ee3dea51932a0fce137adf12e8446145f1c2a"},
11+
"ex_cldr": {:git, "https://github.com/elixir-cldr/cldr48.git", "273ca19fa5755ad416e496699ab91956340a5ee3", []},
1212
"ex_cldr_currencies": {:hex, :ex_cldr_currencies, "2.16.5", "9b8065605bf0c77b6b07b8fd05d26f34f848b8f5ead2343837f0f4bbf3ac2f10", [:mix], [{:ex_cldr, "~> 2.38", [hex: :ex_cldr, repo: "hexpm", optional: false]}, {:jason, "~> 1.0", [hex: :jason, repo: "hexpm", optional: true]}], "hexpm", "4397179028f0a7389de278afd0239771f39ba8d1984ce072bc9b715fa28f30d3"},
1313
"ex_cldr_lists": {:hex, :ex_cldr_lists, "2.11.1", "ad18f861d7c5ca82aac6d173469c6a2339645c96790172ab0aa255b64fb7303b", [:mix], [{:ex_cldr_numbers, "~> 2.25", [hex: :ex_cldr_numbers, repo: "hexpm", optional: false]}, {:ex_doc, "~> 0.18", [hex: :ex_doc, repo: "hexpm", optional: true]}, {:jason, "~> 1.0", [hex: :jason, repo: "hexpm", optional: true]}], "hexpm", "00161c04510ccb3f18b19a6b8562e50c21f1e9c15b8ff4c934bea5aad0b4ade2"},
14-
"ex_cldr_numbers": {:hex, :ex_cldr_numbers, "2.35.1", "aa84601e604f6656b4bfb7f58a329328d2cbc13e4601da9071c14af38fc1d641", [:mix], [{:decimal, "~> 1.6 or ~> 2.0", [hex: :decimal, repo: "hexpm", optional: false]}, {:digital_token, "~> 0.3 or ~> 1.0", [hex: :digital_token, repo: "hexpm", optional: false]}, {:ex_cldr, "~> 2.42", [hex: :ex_cldr, repo: "hexpm", optional: false]}, {:ex_cldr_currencies, "~> 2.16", [hex: :ex_cldr_currencies, repo: "hexpm", optional: false]}, {:jason, "~> 1.0", [hex: :jason, repo: "hexpm", optional: true]}], "hexpm", "925c25debb0a4d27b3559885a79fb66dd4ebb6b72ce46b1e971db647042e28a0"},
15-
"ex_cldr_units": {:hex, :ex_cldr_units, "3.19.0", "9b03c90f53e1f93c33aa80923da7d78ac79f3aba11f2ed40218b6008cb8c0ecc", [:mix], [{:cldr_utils, "~> 2.25", [hex: :cldr_utils, repo: "hexpm", optional: false]}, {:decimal, "~> 1.6 or ~> 2.0", [hex: :decimal, repo: "hexpm", optional: false]}, {:ex_cldr_lists, "~> 2.10", [hex: :ex_cldr_lists, repo: "hexpm", optional: false]}, {:ex_cldr_numbers, "~> 2.35.0", [hex: :ex_cldr_numbers, repo: "hexpm", optional: false]}, {:ex_doc, "~> 0.18", [hex: :ex_doc, repo: "hexpm", optional: true]}, {:jason, "~> 1.0", [hex: :jason, repo: "hexpm", optional: true]}], "hexpm", "2795f250aaafd573d067e8de346fbfb6a33810182e1b61747d127867e83259fa"},
14+
"ex_cldr_numbers": {:git, "https://github.com/elixir-cldr/cldr_numbers.git", "4cbc9c15a7abcd89fb86a74ff707a0175c2254aa", [branch: "cldr48"]},
15+
"ex_cldr_units": {:hex, :ex_cldr_units, "3.19.2", "a0fd72de6c33e7b836305a27da288404853365538bffb728cbe5055ad92a3ea3", [:mix], [{:cldr_utils, "~> 2.25", [hex: :cldr_utils, repo: "hexpm", optional: false]}, {:decimal, "~> 1.6 or ~> 2.0", [hex: :decimal, repo: "hexpm", optional: false]}, {:ex_cldr_lists, "~> 2.10", [hex: :ex_cldr_lists, repo: "hexpm", optional: false]}, {:ex_cldr_numbers, "~> 2.35", [hex: :ex_cldr_numbers, repo: "hexpm", optional: false]}, {:ex_doc, "~> 0.18", [hex: :ex_doc, repo: "hexpm", optional: true]}, {:jason, "~> 1.0", [hex: :jason, repo: "hexpm", optional: true]}], "hexpm", "f3f0c8cd8f192844a447838f33dfb942f54307afb213ad776264fae92d92ed35"},
1616
"ex_doc": {:hex, :ex_doc, "0.38.4", "ab48dff7a8af84226bf23baddcdda329f467255d924380a0cf0cee97bb9a9ede", [:mix], [{:earmark_parser, "~> 1.4.44", [hex: :earmark_parser, repo: "hexpm", optional: false]}, {:makeup_c, ">= 0.1.0", [hex: :makeup_c, repo: "hexpm", optional: true]}, {:makeup_elixir, "~> 0.14 or ~> 1.0", [hex: :makeup_elixir, repo: "hexpm", optional: false]}, {:makeup_erlang, "~> 0.1 or ~> 1.0", [hex: :makeup_erlang, repo: "hexpm", optional: false]}, {:makeup_html, ">= 0.1.0", [hex: :makeup_html, repo: "hexpm", optional: true]}], "hexpm", "f7b62346408a83911c2580154e35613eb314e0278aeea72ed7fedef9c1f165b2"},
1717
"jason": {:hex, :jason, "1.4.4", "b9226785a9aa77b6857ca22832cffa5d5011a667207eb2a0ad56adb5db443b8a", [:mix], [{:decimal, "~> 1.0 or ~> 2.0", [hex: :decimal, repo: "hexpm", optional: true]}], "hexpm", "c5eb0cab91f094599f94d55bc63409236a8ec69a21a67814529e8d5f6cc90b3b"},
1818
"makeup": {:hex, :makeup, "1.2.1", "e90ac1c65589ef354378def3ba19d401e739ee7ee06fb47f94c687016e3713d1", [:mix], [{:nimble_parsec, "~> 1.4", [hex: :nimble_parsec, repo: "hexpm", optional: false]}], "hexpm", "d36484867b0bae0fea568d10131197a4c2e47056a6fbe84922bf6ba71c8d17ce"},

mix/backend.ex

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
require Cldr.Calendar
2+
require Cldr.Calendar.Backend
23
require Cldr.Calendar.Backend.Compiler
34

45
defmodule MyApp.Cldr do

0 commit comments

Comments
 (0)