diff --git a/lib/combinators.ex b/lib/combinators.ex index 8664752..b0e0d67 100644 --- a/lib/combinators.ex +++ b/lib/combinators.ex @@ -1,37 +1,42 @@ # Generated from lib/combinators.ex.exs, do not edit. -# Generated at 2022-10-07 16:18:47Z. +# Generated at 2022-12-03 10:33:39Z. defmodule DateTimeParser.Combinators do @moduledoc false # credo:disable-for-this-file - @months_map %{ - "january" => 1, - "february" => 2, - "march" => 3, - "april" => 4, - "may" => 5, - "june" => 6, - "july" => 7, - "august" => 8, - "september" => 9, - "october" => 10, - "november" => 11, - "december" => 12, - "jan" => 1, - "feb" => 2, - "mar" => 3, - "apr" => 4, - "jun" => 6, - "jul" => 7, - "aug" => 8, - "sept" => 9, - "sep" => 9, - "oct" => 10, - "nov" => 11, - "dec" => 12 - } - + @default_languages ["en"] + @supported_languages Application.compile_env(:date_time_parser, :languages, @default_languages) + + @months [ + "January", + "February", + "March", + "April", + "May", + "June", + "July", + "August", + "September", + "October", + "November", + "December" + ] + + append_months = fn lang, current_mapping -> + @months + |> Enum.with_index(1) + |> Enum.reduce(current_mapping, fn {base_month, index}, acc -> + month = Timex.Translator.translate(lang, "months", base_month) + month_abbr = Timex.Translator.translate(lang, "months_abbr", String.slice(base_month, 0..2)) + + acc + |> Map.put(String.downcase(month), index) + |> Map.put(String.downcase(month_abbr), index) + end) + end + + @months_map Enum.reduce(@supported_languages, %{}, &append_months.(&1, &2)) def to_integer(value) when is_binary(value), do: String.to_integer(value) def vocal_month_to_numeric_month(value), do: Map.get(@months_map, value) @@ -998,17 +1003,6 @@ defmodule DateTimeParser.Combinators do parse_datetime_us__37(rest, ["april"] ++ acc, stack, context, comb__line, comb__offset + 5) end - defp parse_datetime_us__36( - <<"sept", rest::binary>>, - acc, - stack, - context, - comb__line, - comb__offset - ) do - parse_datetime_us__37(rest, ["sept"] ++ acc, stack, context, comb__line, comb__offset + 4) - end - defp parse_datetime_us__36( <<"june", rest::binary>>, acc, @@ -1613,17 +1607,6 @@ defmodule DateTimeParser.Combinators do parse_datetime_us__62(rest, ["april"] ++ acc, stack, context, comb__line, comb__offset + 5) end - defp parse_datetime_us__61( - <<"sept", rest::binary>>, - acc, - stack, - context, - comb__line, - comb__offset - ) do - parse_datetime_us__62(rest, ["sept"] ++ acc, stack, context, comb__line, comb__offset + 4) - end - defp parse_datetime_us__61( <<"june", rest::binary>>, acc, @@ -2915,17 +2898,6 @@ defmodule DateTimeParser.Combinators do parse_datetime_us__119(rest, ["april"] ++ acc, stack, context, comb__line, comb__offset + 5) end - defp parse_datetime_us__118( - <<"sept", rest::binary>>, - acc, - stack, - context, - comb__line, - comb__offset - ) do - parse_datetime_us__119(rest, ["sept"] ++ acc, stack, context, comb__line, comb__offset + 4) - end - defp parse_datetime_us__118( <<"june", rest::binary>>, acc, @@ -4234,17 +4206,6 @@ defmodule DateTimeParser.Combinators do parse_datetime_us__162(rest, ["april"] ++ acc, stack, context, comb__line, comb__offset + 5) end - defp parse_datetime_us__161( - <<"sept", rest::binary>>, - acc, - stack, - context, - comb__line, - comb__offset - ) do - parse_datetime_us__162(rest, ["sept"] ++ acc, stack, context, comb__line, comb__offset + 4) - end - defp parse_datetime_us__161( <<"june", rest::binary>>, acc, @@ -5636,17 +5597,6 @@ defmodule DateTimeParser.Combinators do parse_datetime_us__213(rest, ["april"] ++ acc, stack, context, comb__line, comb__offset + 5) end - defp parse_datetime_us__212( - <<"sept", rest::binary>>, - acc, - stack, - context, - comb__line, - comb__offset - ) do - parse_datetime_us__213(rest, ["sept"] ++ acc, stack, context, comb__line, comb__offset + 4) - end - defp parse_datetime_us__212( <<"june", rest::binary>>, acc, @@ -6492,17 +6442,6 @@ defmodule DateTimeParser.Combinators do parse_datetime_us__252(rest, ["april"] ++ acc, stack, context, comb__line, comb__offset + 5) end - defp parse_datetime_us__251( - <<"sept", rest::binary>>, - acc, - stack, - context, - comb__line, - comb__offset - ) do - parse_datetime_us__252(rest, ["sept"] ++ acc, stack, context, comb__line, comb__offset + 4) - end - defp parse_datetime_us__251( <<"june", rest::binary>>, acc, @@ -8078,17 +8017,6 @@ defmodule DateTimeParser.Combinators do parse_datetime_us__317(rest, ["april"] ++ acc, stack, context, comb__line, comb__offset + 5) end - defp parse_datetime_us__316( - <<"sept", rest::binary>>, - acc, - stack, - context, - comb__line, - comb__offset - ) do - parse_datetime_us__317(rest, ["sept"] ++ acc, stack, context, comb__line, comb__offset + 4) - end - defp parse_datetime_us__316( <<"june", rest::binary>>, acc, @@ -10000,17 +9928,6 @@ defmodule DateTimeParser.Combinators do parse_datetime_us__376(rest, ["april"] ++ acc, stack, context, comb__line, comb__offset + 5) end - defp parse_datetime_us__375( - <<"sept", rest::binary>>, - acc, - stack, - context, - comb__line, - comb__offset - ) do - parse_datetime_us__376(rest, ["sept"] ++ acc, stack, context, comb__line, comb__offset + 4) - end - defp parse_datetime_us__375( <<"june", rest::binary>>, acc, @@ -11160,17 +11077,6 @@ defmodule DateTimeParser.Combinators do parse_datetime_us__422(rest, ["april"] ++ acc, stack, context, comb__line, comb__offset + 5) end - defp parse_datetime_us__421( - <<"sept", rest::binary>>, - acc, - stack, - context, - comb__line, - comb__offset - ) do - parse_datetime_us__422(rest, ["sept"] ++ acc, stack, context, comb__line, comb__offset + 4) - end - defp parse_datetime_us__421( <<"june", rest::binary>>, acc, @@ -11865,17 +11771,6 @@ defmodule DateTimeParser.Combinators do parse_datetime_us__447(rest, ["april"] ++ acc, stack, context, comb__line, comb__offset + 5) end - defp parse_datetime_us__446( - <<"sept", rest::binary>>, - acc, - stack, - context, - comb__line, - comb__offset - ) do - parse_datetime_us__447(rest, ["sept"] ++ acc, stack, context, comb__line, comb__offset + 4) - end - defp parse_datetime_us__446( <<"june", rest::binary>>, acc, @@ -13335,17 +13230,6 @@ defmodule DateTimeParser.Combinators do parse_datetime_us__504(rest, ["april"] ++ acc, stack, context, comb__line, comb__offset + 5) end - defp parse_datetime_us__503( - <<"sept", rest::binary>>, - acc, - stack, - context, - comb__line, - comb__offset - ) do - parse_datetime_us__504(rest, ["sept"] ++ acc, stack, context, comb__line, comb__offset + 4) - end - defp parse_datetime_us__503( <<"june", rest::binary>>, acc, @@ -14654,17 +14538,6 @@ defmodule DateTimeParser.Combinators do parse_datetime_us__547(rest, ["april"] ++ acc, stack, context, comb__line, comb__offset + 5) end - defp parse_datetime_us__546( - <<"sept", rest::binary>>, - acc, - stack, - context, - comb__line, - comb__offset - ) do - parse_datetime_us__547(rest, ["sept"] ++ acc, stack, context, comb__line, comb__offset + 4) - end - defp parse_datetime_us__546( <<"june", rest::binary>>, acc, @@ -16056,17 +15929,6 @@ defmodule DateTimeParser.Combinators do parse_datetime_us__598(rest, ["april"] ++ acc, stack, context, comb__line, comb__offset + 5) end - defp parse_datetime_us__597( - <<"sept", rest::binary>>, - acc, - stack, - context, - comb__line, - comb__offset - ) do - parse_datetime_us__598(rest, ["sept"] ++ acc, stack, context, comb__line, comb__offset + 4) - end - defp parse_datetime_us__597( <<"june", rest::binary>>, acc, @@ -16912,17 +16774,6 @@ defmodule DateTimeParser.Combinators do parse_datetime_us__637(rest, ["april"] ++ acc, stack, context, comb__line, comb__offset + 5) end - defp parse_datetime_us__636( - <<"sept", rest::binary>>, - acc, - stack, - context, - comb__line, - comb__offset - ) do - parse_datetime_us__637(rest, ["sept"] ++ acc, stack, context, comb__line, comb__offset + 4) - end - defp parse_datetime_us__636( <<"june", rest::binary>>, acc, @@ -18498,17 +18349,6 @@ defmodule DateTimeParser.Combinators do parse_datetime_us__702(rest, ["april"] ++ acc, stack, context, comb__line, comb__offset + 5) end - defp parse_datetime_us__701( - <<"sept", rest::binary>>, - acc, - stack, - context, - comb__line, - comb__offset - ) do - parse_datetime_us__702(rest, ["sept"] ++ acc, stack, context, comb__line, comb__offset + 4) - end - defp parse_datetime_us__701( <<"june", rest::binary>>, acc, @@ -20420,17 +20260,6 @@ defmodule DateTimeParser.Combinators do parse_datetime_us__761(rest, ["april"] ++ acc, stack, context, comb__line, comb__offset + 5) end - defp parse_datetime_us__760( - <<"sept", rest::binary>>, - acc, - stack, - context, - comb__line, - comb__offset - ) do - parse_datetime_us__761(rest, ["sept"] ++ acc, stack, context, comb__line, comb__offset + 4) - end - defp parse_datetime_us__760( <<"june", rest::binary>>, acc, @@ -25529,17 +25358,6 @@ defmodule DateTimeParser.Combinators do parse_datetime_us__905(rest, ["april"] ++ acc, stack, context, comb__line, comb__offset + 5) end - defp parse_datetime_us__904( - <<"sept", rest::binary>>, - acc, - stack, - context, - comb__line, - comb__offset - ) do - parse_datetime_us__905(rest, ["sept"] ++ acc, stack, context, comb__line, comb__offset + 4) - end - defp parse_datetime_us__904( <<"june", rest::binary>>, acc, @@ -30730,10 +30548,6 @@ defmodule DateTimeParser.Combinators do parse_datetime__37(rest, ["april"] ++ acc, stack, context, comb__line, comb__offset + 5) end - defp parse_datetime__36(<<"sept", rest::binary>>, acc, stack, context, comb__line, comb__offset) do - parse_datetime__37(rest, ["sept"] ++ acc, stack, context, comb__line, comb__offset + 4) - end - defp parse_datetime__36(<<"june", rest::binary>>, acc, stack, context, comb__line, comb__offset) do parse_datetime__37(rest, ["june"] ++ acc, stack, context, comb__line, comb__offset + 4) end @@ -31149,10 +30963,6 @@ defmodule DateTimeParser.Combinators do parse_datetime__62(rest, ["april"] ++ acc, stack, context, comb__line, comb__offset + 5) end - defp parse_datetime__61(<<"sept", rest::binary>>, acc, stack, context, comb__line, comb__offset) do - parse_datetime__62(rest, ["sept"] ++ acc, stack, context, comb__line, comb__offset + 4) - end - defp parse_datetime__61(<<"june", rest::binary>>, acc, stack, context, comb__line, comb__offset) do parse_datetime__62(rest, ["june"] ++ acc, stack, context, comb__line, comb__offset + 4) end @@ -31866,17 +31676,6 @@ defmodule DateTimeParser.Combinators do parse_datetime__105(rest, ["april"] ++ acc, stack, context, comb__line, comb__offset + 5) end - defp parse_datetime__104( - <<"sept", rest::binary>>, - acc, - stack, - context, - comb__line, - comb__offset - ) do - parse_datetime__105(rest, ["sept"] ++ acc, stack, context, comb__line, comb__offset + 4) - end - defp parse_datetime__104( <<"june", rest::binary>>, acc, @@ -32720,17 +32519,6 @@ defmodule DateTimeParser.Combinators do parse_datetime__162(rest, ["april"] ++ acc, stack, context, comb__line, comb__offset + 5) end - defp parse_datetime__161( - <<"sept", rest::binary>>, - acc, - stack, - context, - comb__line, - comb__offset - ) do - parse_datetime__162(rest, ["sept"] ++ acc, stack, context, comb__line, comb__offset + 4) - end - defp parse_datetime__161( <<"june", rest::binary>>, acc, @@ -33527,17 +33315,6 @@ defmodule DateTimeParser.Combinators do parse_datetime__213(rest, ["april"] ++ acc, stack, context, comb__line, comb__offset + 5) end - defp parse_datetime__212( - <<"sept", rest::binary>>, - acc, - stack, - context, - comb__line, - comb__offset - ) do - parse_datetime__213(rest, ["sept"] ++ acc, stack, context, comb__line, comb__offset + 4) - end - defp parse_datetime__212( <<"june", rest::binary>>, acc, @@ -34198,17 +33975,6 @@ defmodule DateTimeParser.Combinators do parse_datetime__266(rest, ["april"] ++ acc, stack, context, comb__line, comb__offset + 5) end - defp parse_datetime__265( - <<"sept", rest::binary>>, - acc, - stack, - context, - comb__line, - comb__offset - ) do - parse_datetime__266(rest, ["sept"] ++ acc, stack, context, comb__line, comb__offset + 4) - end - defp parse_datetime__265( <<"june", rest::binary>>, acc, @@ -35235,17 +35001,6 @@ defmodule DateTimeParser.Combinators do parse_datetime__327(rest, ["april"] ++ acc, stack, context, comb__line, comb__offset + 5) end - defp parse_datetime__326( - <<"sept", rest::binary>>, - acc, - stack, - context, - comb__line, - comb__offset - ) do - parse_datetime__327(rest, ["sept"] ++ acc, stack, context, comb__line, comb__offset + 4) - end - defp parse_datetime__326( <<"june", rest::binary>>, acc, @@ -36020,17 +35775,6 @@ defmodule DateTimeParser.Combinators do parse_datetime__372(rest, ["april"] ++ acc, stack, context, comb__line, comb__offset + 5) end - defp parse_datetime__371( - <<"sept", rest::binary>>, - acc, - stack, - context, - comb__line, - comb__offset - ) do - parse_datetime__372(rest, ["sept"] ++ acc, stack, context, comb__line, comb__offset + 4) - end - defp parse_datetime__371( <<"june", rest::binary>>, acc, @@ -36711,17 +36455,6 @@ defmodule DateTimeParser.Combinators do parse_datetime__418(rest, ["april"] ++ acc, stack, context, comb__line, comb__offset + 5) end - defp parse_datetime__417( - <<"sept", rest::binary>>, - acc, - stack, - context, - comb__line, - comb__offset - ) do - parse_datetime__418(rest, ["sept"] ++ acc, stack, context, comb__line, comb__offset + 4) - end - defp parse_datetime__417( <<"june", rest::binary>>, acc, @@ -37150,17 +36883,6 @@ defmodule DateTimeParser.Combinators do parse_datetime__443(rest, ["april"] ++ acc, stack, context, comb__line, comb__offset + 5) end - defp parse_datetime__442( - <<"sept", rest::binary>>, - acc, - stack, - context, - comb__line, - comb__offset - ) do - parse_datetime__443(rest, ["sept"] ++ acc, stack, context, comb__line, comb__offset + 4) - end - defp parse_datetime__442( <<"june", rest::binary>>, acc, @@ -37888,17 +37610,6 @@ defmodule DateTimeParser.Combinators do parse_datetime__486(rest, ["april"] ++ acc, stack, context, comb__line, comb__offset + 5) end - defp parse_datetime__485( - <<"sept", rest::binary>>, - acc, - stack, - context, - comb__line, - comb__offset - ) do - parse_datetime__486(rest, ["sept"] ++ acc, stack, context, comb__line, comb__offset + 4) - end - defp parse_datetime__485( <<"june", rest::binary>>, acc, @@ -38742,17 +38453,6 @@ defmodule DateTimeParser.Combinators do parse_datetime__543(rest, ["april"] ++ acc, stack, context, comb__line, comb__offset + 5) end - defp parse_datetime__542( - <<"sept", rest::binary>>, - acc, - stack, - context, - comb__line, - comb__offset - ) do - parse_datetime__543(rest, ["sept"] ++ acc, stack, context, comb__line, comb__offset + 4) - end - defp parse_datetime__542( <<"june", rest::binary>>, acc, @@ -39549,17 +39249,6 @@ defmodule DateTimeParser.Combinators do parse_datetime__594(rest, ["april"] ++ acc, stack, context, comb__line, comb__offset + 5) end - defp parse_datetime__593( - <<"sept", rest::binary>>, - acc, - stack, - context, - comb__line, - comb__offset - ) do - parse_datetime__594(rest, ["sept"] ++ acc, stack, context, comb__line, comb__offset + 4) - end - defp parse_datetime__593( <<"june", rest::binary>>, acc, @@ -40220,17 +39909,6 @@ defmodule DateTimeParser.Combinators do parse_datetime__647(rest, ["april"] ++ acc, stack, context, comb__line, comb__offset + 5) end - defp parse_datetime__646( - <<"sept", rest::binary>>, - acc, - stack, - context, - comb__line, - comb__offset - ) do - parse_datetime__647(rest, ["sept"] ++ acc, stack, context, comb__line, comb__offset + 4) - end - defp parse_datetime__646( <<"june", rest::binary>>, acc, @@ -41257,17 +40935,6 @@ defmodule DateTimeParser.Combinators do parse_datetime__708(rest, ["april"] ++ acc, stack, context, comb__line, comb__offset + 5) end - defp parse_datetime__707( - <<"sept", rest::binary>>, - acc, - stack, - context, - comb__line, - comb__offset - ) do - parse_datetime__708(rest, ["sept"] ++ acc, stack, context, comb__line, comb__offset + 4) - end - defp parse_datetime__707( <<"june", rest::binary>>, acc, @@ -42042,17 +41709,6 @@ defmodule DateTimeParser.Combinators do parse_datetime__753(rest, ["april"] ++ acc, stack, context, comb__line, comb__offset + 5) end - defp parse_datetime__752( - <<"sept", rest::binary>>, - acc, - stack, - context, - comb__line, - comb__offset - ) do - parse_datetime__753(rest, ["sept"] ++ acc, stack, context, comb__line, comb__offset + 4) - end - defp parse_datetime__752( <<"june", rest::binary>>, acc, @@ -44731,17 +44387,6 @@ defmodule DateTimeParser.Combinators do parse_datetime__901(rest, ["april"] ++ acc, stack, context, comb__line, comb__offset + 5) end - defp parse_datetime__900( - <<"sept", rest::binary>>, - acc, - stack, - context, - comb__line, - comb__offset - ) do - parse_datetime__901(rest, ["sept"] ++ acc, stack, context, comb__line, comb__offset + 4) - end - defp parse_datetime__900( <<"june", rest::binary>>, acc, @@ -47457,10 +47102,6 @@ defmodule DateTimeParser.Combinators do parse_date_us__35(rest, ["april"] ++ acc, stack, context, comb__line, comb__offset + 5) end - defp parse_date_us__34(<<"sept", rest::binary>>, acc, stack, context, comb__line, comb__offset) do - parse_date_us__35(rest, ["sept"] ++ acc, stack, context, comb__line, comb__offset + 4) - end - defp parse_date_us__34(<<"june", rest::binary>>, acc, stack, context, comb__line, comb__offset) do parse_date_us__35(rest, ["june"] ++ acc, stack, context, comb__line, comb__offset + 4) end @@ -47862,10 +47503,6 @@ defmodule DateTimeParser.Combinators do parse_date_us__60(rest, ["april"] ++ acc, stack, context, comb__line, comb__offset + 5) end - defp parse_date_us__59(<<"sept", rest::binary>>, acc, stack, context, comb__line, comb__offset) do - parse_date_us__60(rest, ["sept"] ++ acc, stack, context, comb__line, comb__offset + 4) - end - defp parse_date_us__59(<<"june", rest::binary>>, acc, stack, context, comb__line, comb__offset) do parse_date_us__60(rest, ["june"] ++ acc, stack, context, comb__line, comb__offset + 4) end @@ -48688,10 +48325,6 @@ defmodule DateTimeParser.Combinators do parse_date_us__117(rest, ["april"] ++ acc, stack, context, comb__line, comb__offset + 5) end - defp parse_date_us__116(<<"sept", rest::binary>>, acc, stack, context, comb__line, comb__offset) do - parse_date_us__117(rest, ["sept"] ++ acc, stack, context, comb__line, comb__offset + 4) - end - defp parse_date_us__116(<<"june", rest::binary>>, acc, stack, context, comb__line, comb__offset) do parse_date_us__117(rest, ["june"] ++ acc, stack, context, comb__line, comb__offset + 4) end @@ -49405,10 +49038,6 @@ defmodule DateTimeParser.Combinators do parse_date_us__160(rest, ["april"] ++ acc, stack, context, comb__line, comb__offset + 5) end - defp parse_date_us__159(<<"sept", rest::binary>>, acc, stack, context, comb__line, comb__offset) do - parse_date_us__160(rest, ["sept"] ++ acc, stack, context, comb__line, comb__offset + 4) - end - defp parse_date_us__159(<<"june", rest::binary>>, acc, stack, context, comb__line, comb__offset) do parse_date_us__160(rest, ["june"] ++ acc, stack, context, comb__line, comb__offset + 4) end @@ -50191,10 +49820,6 @@ defmodule DateTimeParser.Combinators do parse_date_us__211(rest, ["april"] ++ acc, stack, context, comb__line, comb__offset + 5) end - defp parse_date_us__210(<<"sept", rest::binary>>, acc, stack, context, comb__line, comb__offset) do - parse_date_us__211(rest, ["sept"] ++ acc, stack, context, comb__line, comb__offset + 4) - end - defp parse_date_us__210(<<"june", rest::binary>>, acc, stack, context, comb__line, comb__offset) do parse_date_us__211(rest, ["june"] ++ acc, stack, context, comb__line, comb__offset + 4) end @@ -50718,10 +50343,6 @@ defmodule DateTimeParser.Combinators do parse_date_us__250(rest, ["april"] ++ acc, stack, context, comb__line, comb__offset + 5) end - defp parse_date_us__249(<<"sept", rest::binary>>, acc, stack, context, comb__line, comb__offset) do - parse_date_us__250(rest, ["sept"] ++ acc, stack, context, comb__line, comb__offset + 4) - end - defp parse_date_us__249(<<"june", rest::binary>>, acc, stack, context, comb__line, comb__offset) do parse_date_us__250(rest, ["june"] ++ acc, stack, context, comb__line, comb__offset + 4) end @@ -51625,10 +51246,6 @@ defmodule DateTimeParser.Combinators do parse_date_us__315(rest, ["april"] ++ acc, stack, context, comb__line, comb__offset + 5) end - defp parse_date_us__314(<<"sept", rest::binary>>, acc, stack, context, comb__line, comb__offset) do - parse_date_us__315(rest, ["sept"] ++ acc, stack, context, comb__line, comb__offset + 4) - end - defp parse_date_us__314(<<"june", rest::binary>>, acc, stack, context, comb__line, comb__offset) do parse_date_us__315(rest, ["june"] ++ acc, stack, context, comb__line, comb__offset + 4) end @@ -52630,10 +52247,6 @@ defmodule DateTimeParser.Combinators do parse_date_us__374(rest, ["april"] ++ acc, stack, context, comb__line, comb__offset + 5) end - defp parse_date_us__373(<<"sept", rest::binary>>, acc, stack, context, comb__line, comb__offset) do - parse_date_us__374(rest, ["sept"] ++ acc, stack, context, comb__line, comb__offset + 4) - end - defp parse_date_us__373(<<"june", rest::binary>>, acc, stack, context, comb__line, comb__offset) do parse_date_us__374(rest, ["june"] ++ acc, stack, context, comb__line, comb__offset + 4) end @@ -53379,10 +52992,6 @@ defmodule DateTimeParser.Combinators do parse_date__35(rest, ["april"] ++ acc, stack, context, comb__line, comb__offset + 5) end - defp parse_date__34(<<"sept", rest::binary>>, acc, stack, context, comb__line, comb__offset) do - parse_date__35(rest, ["sept"] ++ acc, stack, context, comb__line, comb__offset + 4) - end - defp parse_date__34(<<"june", rest::binary>>, acc, stack, context, comb__line, comb__offset) do parse_date__35(rest, ["june"] ++ acc, stack, context, comb__line, comb__offset + 4) end @@ -53728,10 +53337,6 @@ defmodule DateTimeParser.Combinators do parse_date__60(rest, ["april"] ++ acc, stack, context, comb__line, comb__offset + 5) end - defp parse_date__59(<<"sept", rest::binary>>, acc, stack, context, comb__line, comb__offset) do - parse_date__60(rest, ["sept"] ++ acc, stack, context, comb__line, comb__offset + 4) - end - defp parse_date__59(<<"june", rest::binary>>, acc, stack, context, comb__line, comb__offset) do parse_date__60(rest, ["june"] ++ acc, stack, context, comb__line, comb__offset + 4) end @@ -54382,10 +53987,6 @@ defmodule DateTimeParser.Combinators do parse_date__103(rest, ["april"] ++ acc, stack, context, comb__line, comb__offset + 5) end - defp parse_date__102(<<"sept", rest::binary>>, acc, stack, context, comb__line, comb__offset) do - parse_date__103(rest, ["sept"] ++ acc, stack, context, comb__line, comb__offset + 4) - end - defp parse_date__102(<<"june", rest::binary>>, acc, stack, context, comb__line, comb__offset) do parse_date__103(rest, ["june"] ++ acc, stack, context, comb__line, comb__offset + 4) end @@ -55130,10 +54731,6 @@ defmodule DateTimeParser.Combinators do parse_date__160(rest, ["april"] ++ acc, stack, context, comb__line, comb__offset + 5) end - defp parse_date__159(<<"sept", rest::binary>>, acc, stack, context, comb__line, comb__offset) do - parse_date__160(rest, ["sept"] ++ acc, stack, context, comb__line, comb__offset + 4) - end - defp parse_date__159(<<"june", rest::binary>>, acc, stack, context, comb__line, comb__offset) do parse_date__160(rest, ["june"] ++ acc, stack, context, comb__line, comb__offset + 4) end @@ -55846,10 +55443,6 @@ defmodule DateTimeParser.Combinators do parse_date__211(rest, ["april"] ++ acc, stack, context, comb__line, comb__offset + 5) end - defp parse_date__210(<<"sept", rest::binary>>, acc, stack, context, comb__line, comb__offset) do - parse_date__211(rest, ["sept"] ++ acc, stack, context, comb__line, comb__offset + 4) - end - defp parse_date__210(<<"june", rest::binary>>, acc, stack, context, comb__line, comb__offset) do parse_date__211(rest, ["june"] ++ acc, stack, context, comb__line, comb__offset + 4) end @@ -56403,10 +55996,6 @@ defmodule DateTimeParser.Combinators do parse_date__264(rest, ["april"] ++ acc, stack, context, comb__line, comb__offset + 5) end - defp parse_date__263(<<"sept", rest::binary>>, acc, stack, context, comb__line, comb__offset) do - parse_date__264(rest, ["sept"] ++ acc, stack, context, comb__line, comb__offset + 4) - end - defp parse_date__263(<<"june", rest::binary>>, acc, stack, context, comb__line, comb__offset) do parse_date__264(rest, ["june"] ++ acc, stack, context, comb__line, comb__offset + 4) end @@ -57342,10 +56931,6 @@ defmodule DateTimeParser.Combinators do parse_date__325(rest, ["april"] ++ acc, stack, context, comb__line, comb__offset + 5) end - defp parse_date__324(<<"sept", rest::binary>>, acc, stack, context, comb__line, comb__offset) do - parse_date__325(rest, ["sept"] ++ acc, stack, context, comb__line, comb__offset + 4) - end - defp parse_date__324(<<"june", rest::binary>>, acc, stack, context, comb__line, comb__offset) do parse_date__325(rest, ["june"] ++ acc, stack, context, comb__line, comb__offset + 4) end @@ -58050,10 +57635,6 @@ defmodule DateTimeParser.Combinators do parse_date__370(rest, ["april"] ++ acc, stack, context, comb__line, comb__offset + 5) end - defp parse_date__369(<<"sept", rest::binary>>, acc, stack, context, comb__line, comb__offset) do - parse_date__370(rest, ["sept"] ++ acc, stack, context, comb__line, comb__offset + 4) - end - defp parse_date__369(<<"june", rest::binary>>, acc, stack, context, comb__line, comb__offset) do parse_date__370(rest, ["june"] ++ acc, stack, context, comb__line, comb__offset + 4) end diff --git a/lib/combinators.ex.exs b/lib/combinators.ex.exs index c374e9c..84f3565 100644 --- a/lib/combinators.ex.exs +++ b/lib/combinators.ex.exs @@ -2,33 +2,39 @@ defmodule DateTimeParser.Combinators do @moduledoc false # credo:disable-for-this-file - @months_map %{ - "january" => 1, - "february" => 2, - "march" => 3, - "april" => 4, - "may" => 5, - "june" => 6, - "july" => 7, - "august" => 8, - "september" => 9, - "october" => 10, - "november" => 11, - "december" => 12, - "jan" => 1, - "feb" => 2, - "mar" => 3, - "apr" => 4, - "jun" => 6, - "jul" => 7, - "aug" => 8, - "sept" => 9, - "sep" => 9, - "oct" => 10, - "nov" => 11, - "dec" => 12 - } + @default_languages ["en"] + @supported_languages Application.compile_env(:date_time_parser, :languages, @default_languages) + + @months [ + "January", + "February", + "March", + "April", + "May", + "June", + "July", + "August", + "September", + "October", + "November", + "December" + ] + + append_months = fn lang, current_mapping -> + @months + |> Enum.with_index(1) + |> Enum.reduce(current_mapping, fn {base_month, index}, acc -> + month = Timex.Translator.translate(lang, "months", base_month) + month_abbr = Timex.Translator.translate(lang, "months_abbr", String.slice(base_month, 0..2)) + + acc + |> Map.put(String.downcase(month), index) + |> Map.put(String.downcase(month_abbr), index) + end) + end + @months_map_additions %{"sept" => 9} + @months_map Enum.reduce(@supported_languages, @months_map_additions, &append_months.(&1, &2)) def to_integer(value) when is_binary(value), do: String.to_integer(value) def vocal_month_to_numeric_month(value), do: Map.get(@months_map, value) @@ -175,33 +181,42 @@ defmodule DateTimeParser.Combinators do ## DATE @days_map %{ - "sun" => "Sunday", - "mon" => "Monday", - "tues" => "Tuesday", - "tue" => "Tuesday", - "wed" => "Wednesday", - "thurs" => "Thursday", - "thur" => "Thursday", - "thu" => "Thursday", - "fri" => "Friday", - "sat" => "Saturday" + "Sun" => "Sunday", + "Mon" => "Monday", + "Tues" => "Tuesday", + "Tue" => "Tuesday", + "Wed" => "Wednesday", + "Thurs" => "Thursday", + "Thur" => "Thursday", + "Thu" => "Thursday", + "Fri" => "Friday", + "Sat" => "Saturday" } + process_days = fn day -> + day + |> Enum.uniq() + |> Enum.map(&String.downcase/1) + |> Enum.sort_by(&byte_size/1) + |> Enum.reverse() + |> Enum.map(&string/1) + end + + @vocal_days_long Enum.reduce(@supported_languages, [], fn lang, acc -> + @days_map + |> Map.values() + |> Enum.map(&Timex.Translator.translate(lang, "weekdays", &1)) + |> then(&process_days.(&1)) + |> Kernel.++(acc) + end) + + @vocal_days_short Enum.reduce(@supported_languages, [], fn lang, acc -> + @days_map + |> Map.keys() + |> Enum.map(&Timex.Translator.translate(lang, "weekdays", &1)) + |> then(&process_days.(&1)) + |> Kernel.++(acc) + end) - @vocal_days_long @days_map - |> Map.values() - |> Enum.uniq() - |> Enum.map(&String.downcase/1) - |> Enum.sort_by(&byte_size/1) - |> Enum.reverse() - |> Enum.map(&string/1) - - @vocal_days_short @days_map - |> Map.keys() - |> Enum.uniq() - |> Enum.map(&String.downcase/1) - |> Enum.sort_by(&byte_size/1) - |> Enum.reverse() - |> Enum.map(&string/1) @date_separator [",", ".", "/", "-", " "] year4 = diff --git a/test/date_time_parser_test.exs b/test/date_time_parser_test.exs index 0ba73fc..8afc2e7 100644 --- a/test/date_time_parser_test.exs +++ b/test/date_time_parser_test.exs @@ -236,6 +236,26 @@ defmodule DateTimeParserTest do test_parsing("jul-10-18", "2018-07-10") end + # describe "translated" do + # test_parsing(" 01 Lut 2013", "2013-02-01") + # test_parsing(" 03 Sty 2013 10:15:26 -0800", "2013-01-03T18:15:26Z", to_utc: true) + # test_parsing(" 11 Lut 2013", "2013-02-11") + # test_parsing(" 11 Sty 2013 13:26:55 -0800", "2013-01-11T21:26:55Z", to_utc: true) + # test_parsing(" 24 Wrz 2013", "2013-09-24") + # test_parsing("01-Lut-18", "2018-02-01") + # test_parsing("01-Lip", "2019-07-01", assume_date: ~D[2019-01-05]) + # test_parsing("01-Lip-18", "2018-07-01") + # test_parsing("Sobota 01 Styczeń 2017 09:22:46 AM", "2017-01-01T09:22:46") + # test_parsing("Sb 01 Sty 2017 10:11:02 PM", "2017-01-01T22:11:02") + # test_parsing("Czw Sie 09 2018 17:13:43 GMT+0000 (UTC)", "2018-08-09T17:13:43Z") + # test_parsing("Czw Lut 08 00:24:33 2018", "2018-02-08T00:24:33") + # test_parsing("Czw Lip 5 12:19:56 2018", "2018-07-05T12:19:56") + # test_parsing("Wt Lip 31 06:44:39 2018", "2018-07-31T06:44:39") + # test_parsing("Czwartek 30 Sierpień 2018 11:31:18 AM", "2018-08-30T11:31:18") + # test_parsing("Wtorek 11 Lipiec 2017 1:43:46 PM", "2017-07-11T13:43:46") + # test_parsing(~s|"Wtorek, Listopad 29, 2016"|, "2016-11-29") + # end + describe "parse_datetime/1 - serial" do test_datetime_parsing("41261.6013888889", ~N[2012-12-18T14:26:00]) test_datetime_parsing("-45103.1454398148", ~N[1776-07-04T20:30:34])