Skip to content

Commit

Permalink
Support more dialyzer flags
Browse files Browse the repository at this point in the history
  • Loading branch information
kipcole9 committed Aug 16, 2024
1 parent 29ead36 commit 33461a7
Show file tree
Hide file tree
Showing 21 changed files with 100 additions and 51 deletions.
8 changes: 8 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,14 @@

**Note that `ex_cldr` version 2.39.0 and later are supported on Elixir 1.12 and later only.**

## Cldr v2.40.1

This is the changelog for Cldr v2.40.1 released on August 16th, 2024. For older changelogs please consult the release tag on [GitHub](https://github.com/elixir-cldr/cldr/tags)

### Bug Fixes

* Fix specs to suport dialyzer flags `:error_handling, :unknown, :underspecs, :extra_return, :missing_return`

## Cldr v2.40.0

This is the changelog for Cldr v2.40.0 released on July 26th, 2024. For older changelogs please consult the release tag on [GitHub](https://github.com/elixir-cldr/cldr/tags)
Expand Down
2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@
> does not attempt to read the configuration of either Phoenix of Ecto.
>
> Specifing the `:json_library` parameter under the `:ex_cldr`
> configuration key in `config.exs` is recommended however when executing on OTP
> configuration key in `config.exs` is recommended when executing on OTP
> versions below OTP 27 but the availability of `Jason` or `Poison` will still be
> automatically detected and configured if the `:json_library` key is not set.
Expand Down
10 changes: 6 additions & 4 deletions lib/cldr.ex
Original file line number Diff line number Diff line change
Expand Up @@ -1279,7 +1279,7 @@ defmodule Cldr do
"「Quoted String」"
"""
@spec quote(String.t(), backend(), Keyword.t()) :: String.t()
@spec quote(String.t(), backend(), Keyword.t()) :: String.t() | {:error, {module, String.t()}}
def quote(string, backend \\ default_backend!(), options \\ [])

def quote(string, options, []) when is_binary(string) and is_list(options) do
Expand Down Expand Up @@ -1336,7 +1336,8 @@ defmodule Cldr do
"And furthermore … there is much to be done"
"""
@spec ellipsis(String.t() | list(String.t()), backend(), Keyword.t()) :: String.t()
@spec ellipsis(String.t() | list(String.t()), backend(), Keyword.t()) ::
String.t() | {:error, {module, String.t()}}
def ellipsis(string, backend \\ default_backend!(), options \\ [])

def ellipsis(string, options, []) when is_list(options) do
Expand Down Expand Up @@ -2430,8 +2431,9 @@ defmodule Cldr do
|> String.downcase()
|> String.to_existing_atom()
|> validate_measurement_system()
rescue ArgumentError ->
{:error, unknown_measurement_system_error(system)}
rescue
ArgumentError ->
{:error, unknown_measurement_system_error(system)}
end

def validate_measurement_system(system) when system in @measurement_systems do
Expand Down
7 changes: 4 additions & 3 deletions lib/cldr/backend/cldr_backend.ex
Original file line number Diff line number Diff line change
Expand Up @@ -70,7 +70,7 @@ defmodule Cldr.Backend do
:"001"
"""
@spec default_territory() :: Locale.territory_code()
@spec default_territory() :: Locale.territory_code() | {:error, {module, String.t()}}
def default_territory do
Cldr.Locale.territory_from_locale(@default_locale)
end
Expand Down Expand Up @@ -474,7 +474,7 @@ defmodule Cldr.Backend do
"「Quoted String」"
"""
@spec quote(String.t(), Keyword.t()) :: String.t()
@spec quote(String.t(), Keyword.t()) :: String.t() | {:error, {module, String.t()}}

def quote(string, options \\ []) when is_binary(string) and is_list(options) do
locale = options[:locale] || Cldr.get_locale()
Expand Down Expand Up @@ -530,7 +530,8 @@ defmodule Cldr.Backend do
"And furthermore … there is much to be done"
"""
@spec ellipsis(String.t() | list(String.t()), Keyword.t()) :: String.t()
@spec ellipsis(String.t() | list(String.t()), Keyword.t()) ::
String.t() | {:error, {module, String.t()}}

def ellipsis(string, options \\ []) when is_list(options) do
locale = options[:locale] || Cldr.get_locale()
Expand Down
2 changes: 1 addition & 1 deletion lib/cldr/backend/locale.ex
Original file line number Diff line number Diff line change
Expand Up @@ -47,7 +47,7 @@ defmodule Cldr.Locale.Backend do
"""
@spec territory_from_locale(LanguageTag.t() | Locale.locale_name()) ::
Locale.territory_code()
Locale.territory_code() | {:error, {module, String.t()}}

@doc since: "2.18.2"

Expand Down
2 changes: 1 addition & 1 deletion lib/cldr/config/config.ex
Original file line number Diff line number Diff line change
Expand Up @@ -1513,7 +1513,7 @@ defmodule Cldr.Config do
true
"""
@spec gettext_configured?(t()) :: boolean
@spec gettext_configured?(t()) :: boolean | nil
def gettext_configured?(config) do
Application.ensure_all_started(:gettext)
gettext_module = gettext(config)
Expand Down
2 changes: 1 addition & 1 deletion lib/cldr/config/dependents.ex
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ defmodule Cldr.Config.Dependents do
Cldr.Unit => {Cldr.Unit.Backend, :define_unit_module},
Cldr.Territory => {Cldr.Territory.Backend, :define_territory_module},
Cldr.Calendar => {Cldr.Calendar.Backend, :define_calendar_module},
Cldr.PersonName => {Cldr.PersonName.Backend, :define_person_name_module},
Cldr.PersonName => {Cldr.PersonName.Backend, :define_person_name_module}
}
end

Expand Down
2 changes: 1 addition & 1 deletion lib/cldr/config/rbnf_config.ex
Original file line number Diff line number Diff line change
Expand Up @@ -122,7 +122,7 @@ defmodule Cldr.Rbnf.Config do
# a valid RBNF locale

def for_locale(locale_name) when Cldr.is_locale_name(locale_name) do
if File.exists?(locale_path(locale_name)) do
if File.exists?(locale_path(locale_name)) do
rules =
locale_name
|> locale_path
Expand Down
2 changes: 1 addition & 1 deletion lib/cldr/kino/data_table.ex
Original file line number Diff line number Diff line change
Expand Up @@ -19,4 +19,4 @@ defmodule Cldr.Kino.DataTable do
:default
end
end
end
end
2 changes: 1 addition & 1 deletion lib/cldr/language_tag.ex
Original file line number Diff line number Diff line change
Expand Up @@ -384,7 +384,7 @@ defmodule Cldr.LanguageTag do
string = Cldr.LanguageTag.to_string(language_tag)
backend = language_tag.backend

"#{inspect backend}.Locale.new!(" <> inspect(string) <> ")"
"#{inspect(backend)}.Locale.new!(" <> inspect(string) <> ")"
# "#Cldr.LanguageTag<" <> language_tag.canonical_locale_name <> " [validated]>"
end
end
Expand Down
5 changes: 3 additions & 2 deletions lib/cldr/locale.ex
Original file line number Diff line number Diff line change
Expand Up @@ -1074,7 +1074,8 @@ defmodule Cldr.Locale do
however it is correctly parsed to support future use.
"""
@spec territory_from_locale(LanguageTag.t() | locale_name() | String.t()) :: territory_code()
@spec territory_from_locale(LanguageTag.t() | locale_name() | String.t()) ::
territory_code() | {:error, {module, String.t()}}

@doc since: "2.18.2"

Expand Down Expand Up @@ -1866,7 +1867,7 @@ defmodule Cldr.Locale do
end
end

@spec gettext_locale_name(Cldr.LanguageTag.t()) :: locale_name | nil
@spec gettext_locale_name(Cldr.LanguageTag.t()) :: String.t() | nil
defp gettext_locale_name(%LanguageTag{} = language_tag) do
language_tag
|> first_match(&known_gettext_locale_name(&1, &2, language_tag.backend))
Expand Down
3 changes: 1 addition & 2 deletions lib/cldr/locale/loader.ex
Original file line number Diff line number Diff line change
Expand Up @@ -121,7 +121,7 @@ defmodule Cldr.Locale.Loader do
"locale_display_names",
"languages",
"lenient_parse",
"dates",
"dates"
]

@doc false
Expand Down Expand Up @@ -201,7 +201,6 @@ defmodule Cldr.Locale.Loader do
Map.put(content, :dates, dates)
end


@doc false
def underscore(string) when is_binary(string) do
string
Expand Down
4 changes: 2 additions & 2 deletions lib/cldr/plural_rules/plural_rule.ex
Original file line number Diff line number Diff line change
Expand Up @@ -448,7 +448,7 @@ defmodule Cldr.Number.PluralRule do
Math.number_or_decimal(),
Locale.locale_name() | LanguageTag.t(),
atom() | pos_integer()
) :: Cldr.Number.PluralRule.plural_type()
) :: Cldr.Number.PluralRule.plural_type() | {:error, {module, String.t()}}

def plural_rule(number, locale, rounding \\ Math.default_rounding())

Expand Down Expand Up @@ -655,7 +655,7 @@ defmodule Cldr.Number.PluralRule do
first :: Cldr.Number.PluralRule.plural_type(),
last :: Cldr.Number.PluralRule.plural_type(),
locale :: Cldr.Locale.locale_name() | Cldr.LanguageTag.t()
) :: Cldr.Number.PluralRule.plural_type()
) :: Cldr.Number.PluralRule.plural_type() | {:error, {module, String.t()}}

def plural_rule(first, last, %Cldr.LanguageTag{language: language}) do
plural_rule(first, last, language)
Expand Down
4 changes: 2 additions & 2 deletions lib/cldr/substitution.ex
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,7 @@ defmodule Cldr.Substitution do
of templates that simplify and speed up parameter substitution at runtime.
"""
@spec parse(String.t()) :: [String.t() | integer, ...]
@spec parse(String.t()) :: [String.t() | integer, ...] | {:error, String.t()}
def parse("") do
[]
end
Expand Down Expand Up @@ -70,7 +70,7 @@ defmodule Cldr.Substitution do
def substitute(item, [0]) do
[item]
end

def substitute([item], [0]) do
[item]
end
Expand Down
8 changes: 7 additions & 1 deletion mix.exs
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,13 @@ defmodule Cldr.Mixfile do
dialyzer: [
ignore_warnings: ".dialyzer_ignore_warnings",
plt_add_apps: ~w(gettext inets jason mix sweet_xml nimble_parsec)a,
flags: [:underspecs]
flags: [
:error_handling,
:unknown,
:underspecs,
:extra_return,
:missing_return
]
],
compilers: [:yecc, :leex] ++ Mix.compilers()
]
Expand Down
12 changes: 6 additions & 6 deletions mix.lock
Original file line number Diff line number Diff line change
@@ -1,18 +1,18 @@
%{
"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"},
"cldr_utils": {:hex, :cldr_utils, "2.28.0", "ce309d11b79fc13e1f22f808b5e3c1647102b01b11734ca8cb0296ca6d406fe4", [: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", "e7ac4bcea0fdbc11b5295ef30dd7b18d0922512399361af06a97198e57d23742"},
"cldr_utils": {:hex, :cldr_utils, "2.28.1", "3d85c835e1d0b7bceb9feed1647025ff7df59180246f13b582422f12b1afd52c", [: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", "79a5f645481d09b1372962384aa275d67d69273e73e3b38a9fee363eb57c2b79"},
"decimal": {:hex, :decimal, "2.1.1", "5611dca5d4b2c3dd497dec8f68751f1f1a54755e8ed2a966c2633cf885973ad6", [:mix], [], "hexpm", "53cfe5f497ed0e7771ae1a475575603d77425099ba5faef9394932b35020ffcc"},
"deep_merge": {:hex, :deep_merge, "1.0.0", "b4aa1a0d1acac393bdf38b2291af38cb1d4a52806cf7a4906f718e1feb5ee961", [:mix], [], "hexpm", "ce708e5f094b9cd4e8f2be4f00d2f4250c4095be93f8cd6d018c753894885430"},
"dialyxir": {:hex, :dialyxir, "1.4.3", "edd0124f358f0b9e95bfe53a9fcf806d615d8f838e2202a9f430d59566b6b53b", [:mix], [{:erlex, ">= 0.2.6", [hex: :erlex, repo: "hexpm", optional: false]}], "hexpm", "bf2cfb75cd5c5006bec30141b131663299c661a864ec7fbbc72dfa557487a986"},
"earmark_parser": {:hex, :earmark_parser, "1.4.40", "f3534689f6b58f48aa3a9ac850d4f05832654fe257bf0549c08cc290035f70d5", [:mix], [], "hexpm", "cdb34f35892a45325bad21735fadb88033bcb7c4c296a999bde769783f53e46a"},
"earmark_parser": {:hex, :earmark_parser, "1.4.41", "ab34711c9dc6212dda44fcd20ecb87ac3f3fce6f0ca2f28d4a00e4154f8cd599", [:mix], [], "hexpm", "a81a04c7e34b6617c2792e291b5a2e57ab316365c2644ddc553bb9ed863ebefa"},
"erlex": {:hex, :erlex, "0.2.7", "810e8725f96ab74d17aac676e748627a07bc87eb950d2b83acd29dc047a30595", [:mix], [], "hexpm", "3ed95f79d1a844c3f6bf0cea61e0d5612a42ce56da9c03f01df538685365efb0"},
"ex_doc": {:hex, :ex_doc, "0.34.2", "13eedf3844ccdce25cfd837b99bea9ad92c4e511233199440488d217c92571e8", [:mix], [{:earmark_parser, "~> 1.4.39", [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", "5ce5f16b41208a50106afed3de6a2ed34f4acfd65715b82a0b84b49d995f95c1"},
"expo": {:hex, :expo, "0.5.2", "beba786aab8e3c5431813d7a44b828e7b922bfa431d6bfbada0904535342efe2", [:mix], [], "hexpm", "8c9bfa06ca017c9cb4020fabe980bc7fdb1aaec059fd004c2ab3bff03b1c599c"},
"gettext": {:hex, :gettext, "0.24.0", "6f4d90ac5f3111673cbefc4ebee96fe5f37a114861ab8c7b7d5b30a1108ce6d8", [:mix], [{:expo, "~> 0.5.1", [hex: :expo, repo: "hexpm", optional: false]}], "hexpm", "bdf75cdfcbe9e4622dd18e034b227d77dd17f0f133853a1c73b97b3d6c770e8b"},
"jason": {:hex, :jason, "1.4.3", "d3f984eeb96fe53b85d20e0b049f03e57d075b5acda3ac8d465c969a2536c17b", [:mix], [{:decimal, "~> 1.0 or ~> 2.0", [hex: :decimal, repo: "hexpm", optional: true]}], "hexpm", "9a90e868927f7c777689baa16d86f4d0e086d968db5c05d917ccff6d443e58a3"},
"expo": {:hex, :expo, "1.0.0", "647639267e088717232f4d4451526e7a9de31a3402af7fcbda09b27e9a10395a", [:mix], [], "hexpm", "18d2093d344d97678e8a331ca0391e85d29816f9664a25653fd7e6166827827c"},
"gettext": {:hex, :gettext, "0.25.0", "98a95a862a94e2d55d24520dd79256a15c87ea75b49673a2e2f206e6ebc42e5d", [:mix], [{:expo, "~> 0.5.1 or ~> 1.0", [hex: :expo, repo: "hexpm", optional: false]}], "hexpm", "38e5d754e66af37980a94fb93bb20dcde1d2361f664b0a19f01e87296634051f"},
"jason": {:hex, :jason, "1.4.4", "b9226785a9aa77b6857ca22832cffa5d5011a667207eb2a0ad56adb5db443b8a", [:mix], [{:decimal, "~> 1.0 or ~> 2.0", [hex: :decimal, repo: "hexpm", optional: true]}], "hexpm", "c5eb0cab91f094599f94d55bc63409236a8ec69a21a67814529e8d5f6cc90b3b"},
"makeup": {:hex, :makeup, "1.1.2", "9ba8837913bdf757787e71c1581c21f9d2455f4dd04cfca785c70bbfff1a76a3", [:mix], [{:nimble_parsec, "~> 1.2.2 or ~> 1.3", [hex: :nimble_parsec, repo: "hexpm", optional: false]}], "hexpm", "cce1566b81fbcbd21eca8ffe808f33b221f9eee2cbc7a1706fc3da9ff18e6cac"},
"makeup_elixir": {:hex, :makeup_elixir, "0.16.2", "627e84b8e8bf22e60a2579dad15067c755531fea049ae26ef1020cad58fe9578", [:mix], [{:makeup, "~> 1.0", [hex: :makeup, repo: "hexpm", optional: false]}, {:nimble_parsec, "~> 1.2.3 or ~> 1.3", [hex: :nimble_parsec, repo: "hexpm", optional: false]}], "hexpm", "41193978704763f6bbe6cc2758b84909e62984c7752b3784bd3c218bb341706b"},
"makeup_erlang": {:hex, :makeup_erlang, "1.0.0", "6f0eff9c9c489f26b69b61440bf1b238d95badae49adac77973cbacae87e3c2e", [:mix], [{:makeup, "~> 1.0", [hex: :makeup, repo: "hexpm", optional: false]}], "hexpm", "ea7a9307de9d1548d2a72d299058d1fd2339e3d398560a0e46c27dab4891e4d2"},
"makeup_erlang": {:hex, :makeup_erlang, "1.0.1", "c7f58c120b2b5aa5fd80d540a89fdf866ed42f1f3994e4fe189abebeab610839", [:mix], [{:makeup, "~> 1.0", [hex: :makeup, repo: "hexpm", optional: false]}], "hexpm", "8a89a1eeccc2d798d6ea15496a6e4870b75e014d1af514b1b71fa33134f57814"},
"nimble_parsec": {:hex, :nimble_parsec, "1.4.0", "51f9b613ea62cfa97b25ccc2c1b4216e81df970acd8e16e8d1bdc58fef21370d", [:mix], [], "hexpm", "9c565862810fb383e9838c1dd2d7d2c437b3d13b267414ba6af33e50d2d1cf28"},
"statistex": {:hex, :statistex, "1.0.0", "f3dc93f3c0c6c92e5f291704cf62b99b553253d7969e9a5fa713e5481cd858a5", [:mix], [], "hexpm", "ff9d8bee7035028ab4742ff52fc80a2aa35cece833cf5319009b52f1b5a86c27"},
"stream_data": {:hex, :stream_data, "1.1.1", "fd515ca95619cca83ba08b20f5e814aaf1e5ebff114659dc9731f966c9226246", [:mix], [], "hexpm", "45d0cd46bd06738463fd53f22b70042dbb58c384bb99ef4e7576e7bb7d3b8c8c"},
Expand Down
10 changes: 9 additions & 1 deletion mix/support/consolidate.ex
Original file line number Diff line number Diff line change
Expand Up @@ -880,14 +880,22 @@ defmodule Cldr.Consolidate do
special: ~x"./@special"s
)
|> Enum.map(fn
%{source: source, base_unit: target, special: "", offset: offset, factor: factor, systems: systems} ->
%{
source: source,
base_unit: target,
special: "",
offset: offset,
factor: factor,
systems: systems
} ->
{underscore(source),
%{
base_unit: underscore(target),
factor: Parser.parse(factor, 1) |> Expression.run(constants),
offset: Parser.parse(offset, 0) |> Expression.run(constants),
systems: Parser.systems(systems)
}}

%{source: source, base_unit: target, special: special, systems: systems} ->
{underscore(source),
%{
Expand Down
42 changes: 30 additions & 12 deletions mix/support/normalize/normalize_datetime.ex
Original file line number Diff line number Diff line change
Expand Up @@ -122,12 +122,23 @@ defmodule Cldr.Normalize.DateTime do
end)
|> Enum.group_by(&elem(&1, 0), &elem(&1, 1))
|> Enum.map(fn
{key, [item]} -> {key, item}
{key, [format, %{ascii: ascii_format}]} -> {key, %{unicode: format, ascii: ascii_format}}
{key, [%{ascii: ascii_format}, format]} -> {key, %{unicode: format, ascii: ascii_format}}
{key, [format, %{variant: variant_format}]} -> {key, %{default: format, variant: variant_format}}
{key, [%{variant: variant_format}, format]} -> {key, %{default: format, variant: variant_format}}
{key, list} when is_list(list) -> {key, Cldr.Map.merge_map_list(list)}
{key, [item]} ->
{key, item}

{key, [format, %{ascii: ascii_format}]} ->
{key, %{unicode: format, ascii: ascii_format}}

{key, [%{ascii: ascii_format}, format]} ->
{key, %{unicode: format, ascii: ascii_format}}

{key, [format, %{variant: variant_format}]} ->
{key, %{default: format, variant: variant_format}}

{key, [%{variant: variant_format}, format]} ->
{key, %{default: format, variant: variant_format}}

{key, list} when is_list(list) ->
{key, Cldr.Map.merge_map_list(list)}
end)
|> Map.new()

Expand All @@ -138,8 +149,8 @@ defmodule Cldr.Normalize.DateTime do
formats =
formats
|> Enum.map(fn {interval_name, interval_formats} ->
interval_formats = map_interval_formats(interval_formats)
{interval_name, interval_formats}
interval_formats = map_interval_formats(interval_formats)
{interval_name, interval_formats}
end)
|> Map.new()

Expand All @@ -156,10 +167,17 @@ defmodule Cldr.Normalize.DateTime do
end)
|> Enum.group_by(&elem(&1, 0), &elem(&1, 1))
|> Enum.map(fn
{key, [item]} -> {key, item}
{key, [format, %{variant: variant_format}]} -> {key, %{default: format, variant: variant_format}}
{key, [%{variant: variant_format}, format]} -> {key, %{default: format, variant: variant_format}}
{key, list} when is_list(list) -> {key, Cldr.Map.merge_map_list(list)}
{key, [item]} ->
{key, item}

{key, [format, %{variant: variant_format}]} ->
{key, %{default: format, variant: variant_format}}

{key, [%{variant: variant_format}, format]} ->
{key, %{default: format, variant: variant_format}}

{key, list} when is_list(list) ->
{key, Cldr.Map.merge_map_list(list)}
end)
|> Map.new()
end
Expand Down
2 changes: 1 addition & 1 deletion mix/support/normalize/normalize_number.ex
Original file line number Diff line number Diff line change
Expand Up @@ -101,7 +101,7 @@ defmodule Cldr.Normalize.Number do
|> Enum.uniq()
end

@spec normalize_short_format(%{}) :: list()
@spec normalize_short_format(%{}) :: list() | nil
def normalize_short_format(nil) do
nil
end
Expand Down
10 changes: 8 additions & 2 deletions mix/support/normalize/normalize_person_names.ex
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,8 @@ defmodule Cldr.Normalize.PersonName do
|> Map.delete("sample_name")
|> Cldr.Map.deep_map(fn
{k, v} ->
if k != "formality" && String.starts_with?(k, "formal") || String.starts_with?(k, "informal") do
if (k != "formality" && String.starts_with?(k, "formal")) ||
String.starts_with?(k, "informal") do
{String.split(k, "_"), v}
else
{String.to_atom(k), v}
Expand All @@ -24,16 +25,21 @@ defmodule Cldr.Normalize.PersonName do
end)
|> Cldr.Map.deep_map(fn
{k, v} when k in [:addressing, :monogram, :referring] ->
formats = Enum.group_by(v, fn {key, _value} -> hd(key) end, fn {_key, value} -> value end)
formats =
Enum.group_by(v, fn {key, _value} -> hd(key) end, fn {_key, value} -> value end)

{k, formats}

other ->
other
end)
|> Cldr.Map.deep_map(fn
{k, v} when k in ["formal", "informal"] ->
{String.to_atom(k), Enum.sort(v)}

{k, v} when k in [:formality, :length] ->
{k, String.to_atom(v)}

other ->
other
end)
Expand Down
Loading

0 comments on commit 33461a7

Please sign in to comment.