diff options
author | José Valim <jose.valim@plataformatec.com.br> | 2019-09-24 12:01:09 +0200 |
---|---|---|
committer | José Valim <jose.valim@plataformatec.com.br> | 2019-09-24 12:01:52 +0200 |
commit | b23b94e8b55a48891e908fc2951830e9d0a15ab1 (patch) | |
tree | f8f31699d938f2a16fd2e183f90526c5da420b1d | |
parent | 5f68e9b58f5576980328e12c93cb38939d387535 (diff) | |
download | elixir-b23b94e8b55a48891e908fc2951830e9d0a15ab1.tar.gz |
Revert "Add inspect/2 callback to Calendar (#9128)"
This reverts commit 23a68035be96717ca5f8fd20355bdb7bc5ed38f8.
-rw-r--r-- | lib/elixir/lib/calendar.ex | 44 | ||||
-rw-r--r-- | lib/elixir/lib/calendar/date.ex | 8 | ||||
-rw-r--r-- | lib/elixir/lib/calendar/datetime.ex | 42 | ||||
-rw-r--r-- | lib/elixir/lib/calendar/iso.ex | 105 | ||||
-rw-r--r-- | lib/elixir/lib/calendar/naive_datetime.ex | 33 | ||||
-rw-r--r-- | lib/elixir/lib/calendar/time.ex | 25 | ||||
-rw-r--r-- | lib/elixir/test/elixir/calendar/date_test.exs | 3 | ||||
-rw-r--r-- | lib/elixir/test/elixir/calendar/datetime_test.exs | 19 | ||||
-rw-r--r-- | lib/elixir/test/elixir/calendar/fakes.exs | 9 | ||||
-rw-r--r-- | lib/elixir/test/elixir/calendar/holocene.exs | 53 | ||||
-rw-r--r-- | lib/elixir/test/elixir/calendar/naive_datetime_test.exs | 3 | ||||
-rw-r--r-- | lib/elixir/test/elixir/calendar/time_test.exs | 5 |
12 files changed, 67 insertions, 282 deletions
diff --git a/lib/elixir/lib/calendar.ex b/lib/elixir/lib/calendar.ex index 170f9fac2..9b99a4f7a 100644 --- a/lib/elixir/lib/calendar.ex +++ b/lib/elixir/lib/calendar.ex @@ -265,50 +265,6 @@ defmodule Calendar do """ @callback valid_time?(hour, minute, second, microsecond) :: boolean - @doc """ - Implements inspect for a date. - """ - @callback inspect_date(year, month, day, Inspect.Opts.t()) :: Inspect.Algebra.t() - - @doc """ - Implements inspect for a time. - """ - @callback inspect_time(hour, minute, second, microsecond, Inspect.Opts.t()) :: - Inspect.Algebra.t() - - @doc """ - Implements inspect for a naive datetime. - """ - @callback inspect_naive_datetime( - year, - month, - day, - hour, - minute, - second, - microsecond, - Inspect.Opts.t() - ) :: - Inspect.Algebra.t() - - @doc """ - Implements inspect for a datetime. - """ - @callback inspect_datetime( - year, - month, - day, - hour, - minute, - second, - microsecond, - time_zone, - zone_abbr, - utc_offset, - std_offset, - Inspect.Opts.t() - ) :: Inspect.Algebra.t() - # General Helpers @doc """ diff --git a/lib/elixir/lib/calendar/date.ex b/lib/elixir/lib/calendar/date.ex index a74efc42b..a06a5911a 100644 --- a/lib/elixir/lib/calendar/date.ex +++ b/lib/elixir/lib/calendar/date.ex @@ -769,8 +769,12 @@ defmodule Date do end defimpl Inspect do - def inspect(%{calendar: calendar, year: year, month: month, day: day}, opts) do - calendar.inspect_date(year, month, day, opts) + def inspect(%{calendar: Calendar.ISO, year: year, month: month, day: day}, _) do + "~D[" <> Calendar.ISO.date_to_string(year, month, day) <> "]" + end + + def inspect(date, opts) do + Inspect.Any.inspect(date, opts) end end end diff --git a/lib/elixir/lib/calendar/datetime.ex b/lib/elixir/lib/calendar/datetime.ex index c7fc63252..14dc9a9c7 100644 --- a/lib/elixir/lib/calendar/datetime.ex +++ b/lib/elixir/lib/calendar/datetime.ex @@ -1373,7 +1373,7 @@ defmodule DateTime do end defimpl Inspect do - def inspect(%{calendar: calendar} = datetime, opts) do + def inspect(%{calendar: Calendar.ISO} = datetime, _) do %{ year: year, month: month, @@ -1388,20 +1388,32 @@ defmodule DateTime do std_offset: std_offset } = datetime - calendar.inspect_datetime( - year, - month, - day, - hour, - minute, - second, - microsecond, - time_zone, - zone_abbr, - utc_offset, - std_offset, - opts - ) + formatted = + Calendar.ISO.datetime_to_string( + year, + month, + day, + hour, + minute, + second, + microsecond, + time_zone, + zone_abbr, + utc_offset, + std_offset + ) + + case datetime do + %{utc_offset: 0, std_offset: 0, time_zone: "Etc/UTC"} -> + "~U[" <> formatted <> "]" + + _ -> + "#DateTime<" <> formatted <> ">" + end + end + + def inspect(datetime, opts) do + Inspect.Any.inspect(datetime, opts) end end end diff --git a/lib/elixir/lib/calendar/iso.ex b/lib/elixir/lib/calendar/iso.ex index 0d00fcb8a..3c0347f3f 100644 --- a/lib/elixir/lib/calendar/iso.ex +++ b/lib/elixir/lib/calendar/iso.ex @@ -715,111 +715,6 @@ defmodule Calendar.ISO do {0, 1} end - @doc """ - Implements the `Inspect` protocol for `Date` in this calendar - """ - @doc since: "1.10.0" - @impl true - @spec inspect_date(Calendar.year(), Calendar.month(), Calendar.day(), Inspect.Opts.t()) :: - Inspect.Algebra.t() - def inspect_date(year, month, day, _) do - "~D[" <> date_to_string(year, month, day) <> "]" - end - - @doc """ - Implements the `Inspect` protocol for `DateTime` in this calendar - """ - @doc since: "1.10.0" - @impl true - @spec inspect_datetime( - Calendar.year(), - Calendar.month(), - Calendar.day(), - Calendar.hour(), - Calendar.minute(), - Calendar.second(), - Calendar.microsecond(), - Calendar.time_zone(), - Calendar.zone_abbr(), - Calendar.utc_offset(), - Calendar.std_offset(), - Inspect.Opts.t() - ) :: - Inspect.Algebra.t() - def inspect_datetime( - year, - month, - day, - hour, - minute, - second, - microsecond, - time_zone, - zone_abbr, - utc_offset, - std_offset, - _opts - ) do - formatted = - datetime_to_string( - year, - month, - day, - hour, - minute, - second, - microsecond, - time_zone, - zone_abbr, - utc_offset, - std_offset - ) - - if utc_offset == 0 && std_offset == 0 && time_zone == "Etc/UTC" do - "~U[" <> formatted <> "]" - else - "#DateTime<" <> formatted <> ">" - end - end - - @doc """ - Implements the `Inspect` protocol for `NaiveDateTime` in this calendar - """ - @doc since: "1.10.0" - @impl true - @spec inspect_naive_datetime( - Calendar.year(), - Calendar.month(), - Calendar.day(), - Calendar.hour(), - Calendar.minute(), - Calendar.second(), - Calendar.microsecond(), - Inspect.Opts.t() - ) :: - Inspect.Algebra.t() - def inspect_naive_datetime(year, month, day, hour, minute, second, microsecond, _opts) do - formatted = naive_datetime_to_string(year, month, day, hour, minute, second, microsecond) - - "~N[" <> formatted <> "]" - end - - @doc """ - Implements the `Inspect` protocol for `Time` in this calendar - """ - @doc since: "1.10.0" - @impl true - @spec inspect_time( - Calendar.hour(), - Calendar.minute(), - Calendar.second(), - Calendar.microsecond(), - Inspect.Opts.t() - ) :: Inspect.Algebra.t() - def inspect_time(hour, minute, second, microsecond, _opts) do - "~T[" <> Calendar.ISO.time_to_string(hour, minute, second, microsecond) <> "]" - end - defp offset_to_string(0, 0, "Etc/UTC", _format), do: "Z" defp offset_to_string(utc, std, _zone, format) do diff --git a/lib/elixir/lib/calendar/naive_datetime.ex b/lib/elixir/lib/calendar/naive_datetime.ex index e788691bc..b7c9ff3c1 100644 --- a/lib/elixir/lib/calendar/naive_datetime.ex +++ b/lib/elixir/lib/calendar/naive_datetime.ex @@ -936,20 +936,25 @@ defmodule NaiveDateTime do end defimpl Inspect do - def inspect( - %{ - calendar: calendar, - year: year, - month: month, - day: day, - hour: hour, - minute: minute, - second: second, - microsecond: microsecond - }, - opts - ) do - calendar.inspect_naive_datetime(year, month, day, hour, minute, second, microsecond, opts) + def inspect(%{calendar: Calendar.ISO} = naive_datetime, _) do + %{ + year: year, + month: month, + day: day, + hour: hour, + minute: minute, + second: second, + microsecond: microsecond + } = naive_datetime + + formatted = + Calendar.ISO.naive_datetime_to_string(year, month, day, hour, minute, second, microsecond) + + "~N[" <> formatted <> "]" + end + + def inspect(naive, opts) do + Inspect.Any.inspect(naive, opts) end end end diff --git a/lib/elixir/lib/calendar/time.ex b/lib/elixir/lib/calendar/time.ex index dd02cb11a..3a5ce54ec 100644 --- a/lib/elixir/lib/calendar/time.ex +++ b/lib/elixir/lib/calendar/time.ex @@ -693,17 +693,20 @@ defmodule Time do end defimpl Inspect do - def inspect( - %{ - hour: hour, - minute: minute, - second: second, - microsecond: microsecond, - calendar: calendar - }, - opts - ) do - calendar.inspect_time(hour, minute, second, microsecond, opts) + def inspect(%{calendar: Calendar.ISO} = time, _) do + %{ + hour: hour, + minute: minute, + second: second, + microsecond: microsecond, + calendar: Calendar.ISO + } = time + + "~T[" <> Calendar.ISO.time_to_string(hour, minute, second, microsecond) <> "]" + end + + def inspect(time, opts) do + Inspect.Any.inspect(time, opts) end end end diff --git a/lib/elixir/test/elixir/calendar/date_test.exs b/lib/elixir/test/elixir/calendar/date_test.exs index b16c575a5..be90cf5a6 100644 --- a/lib/elixir/test/elixir/calendar/date_test.exs +++ b/lib/elixir/test/elixir/calendar/date_test.exs @@ -19,9 +19,6 @@ defmodule DateTest do date = %{~D[2000-01-01] | calendar: FakeCalendar} assert inspect(date) == "%Date{calendar: FakeCalendar, day: 1, month: 1, year: 2000}" - - date = %{~D[2000-01-01] | calendar: Calendar.Holocene} - assert inspect(date) == "2000-1-1 (HE)" end test "compare/2" do diff --git a/lib/elixir/test/elixir/calendar/datetime_test.exs b/lib/elixir/test/elixir/calendar/datetime_test.exs index 69e4f8594..bc66e8d6a 100644 --- a/lib/elixir/test/elixir/calendar/datetime_test.exs +++ b/lib/elixir/test/elixir/calendar/datetime_test.exs @@ -28,25 +28,6 @@ defmodule DateTimeTest do "2000-02-29 23:00:07-02:30 BRM Brazil/Manaus" end - test "Kernel.inspect/1" do - datetime = %DateTime{ - year: 2000, - month: 2, - day: 29, - zone_abbr: "BRM", - hour: 23, - minute: 0, - second: 7, - microsecond: {0, 0}, - utc_offset: -12600, - std_offset: 3600, - time_zone: "Brazil/Manaus" - } - - datetime = %{datetime | calendar: Calendar.Holocene} - assert inspect(datetime) == "2000-2-29 23:00:07 BRM (HE)" - end - test "from_iso8601/1 handles positive and negative offsets" do assert DateTime.from_iso8601("2015-01-24T09:50:07-10:00") |> elem(1) == %DateTime{ diff --git a/lib/elixir/test/elixir/calendar/fakes.exs b/lib/elixir/test/elixir/calendar/fakes.exs index 4c2e72ea9..3dd35955c 100644 --- a/lib/elixir/test/elixir/calendar/fakes.exs +++ b/lib/elixir/test/elixir/calendar/fakes.exs @@ -4,15 +4,6 @@ defmodule FakeCalendar do def naive_datetime_to_string(_, _, _, _, _, _, _), do: "boom" def datetime_to_string(_, _, _, _, _, _, _, _, _, _), do: "boom" def day_rollover_relative_to_midnight_utc, do: {123_456, 123_457} - - def inspect_date(_year, _month, _day, _) do - "%Date{calendar: FakeCalendar, day: 1, month: 1, year: 2000}" - end - - def inspect_naive_datetime(_year, _month, _day, _hour, _minute, _second, _microsecond, _) do - "%NaiveDateTime{calendar: FakeCalendar, day: 1, hour: 23, " <> - "microsecond: {5000, 3}, minute: 0, month: 1, second: 7, year: 2000}" - end end defmodule FakeTimeZoneDatabase do diff --git a/lib/elixir/test/elixir/calendar/holocene.exs b/lib/elixir/test/elixir/calendar/holocene.exs index 027628f22..7d0be4a94 100644 --- a/lib/elixir/test/elixir/calendar/holocene.exs +++ b/lib/elixir/test/elixir/calendar/holocene.exs @@ -47,7 +47,7 @@ defmodule Calendar.Holocene do _utc_offset, _std_offset ) do - "#{year}-#{month}-#{day} " <> + "#{year}-#{month}-#{day}" <> Calendar.ISO.time_to_string(hour, minute, second, microsecond) <> " #{zone_abbr} (HE)" end @@ -79,57 +79,6 @@ defmodule Calendar.Holocene do end @impl true - def inspect_date(year, month, day, _) do - date_to_string(year, month, day) - end - - @impl true - def inspect_datetime( - year, - month, - day, - hour, - minute, - second, - microsecond, - time_zone, - zone_abbr, - utc_offset, - std_offset, - _opts - ) do - datetime_to_string( - year, - month, - day, - hour, - minute, - second, - microsecond, - time_zone, - zone_abbr, - utc_offset, - std_offset - ) - end - - @impl true - def inspect_naive_datetime(year, month, day, hour, minute, second, microsecond, _opts) do - naive_datetime_to_string(year, month, day, hour, minute, second, microsecond) - end - - @impl true - def inspect_time( - hour, - minute, - second, - microsecond, - _opts - ) do - Calendar.ISO.time_to_string(hour, minute, second, microsecond) - end - - @impl true defdelegate time_from_day_fraction(day_fraction), to: Calendar.ISO @impl true diff --git a/lib/elixir/test/elixir/calendar/naive_datetime_test.exs b/lib/elixir/test/elixir/calendar/naive_datetime_test.exs index 7aeae64b0..4d6e31b65 100644 --- a/lib/elixir/test/elixir/calendar/naive_datetime_test.exs +++ b/lib/elixir/test/elixir/calendar/naive_datetime_test.exs @@ -22,9 +22,6 @@ defmodule NaiveDateTimeTest do assert inspect(ndt) == "%NaiveDateTime{calendar: FakeCalendar, day: 1, hour: 23, " <> "microsecond: {5000, 3}, minute: 0, month: 1, second: 7, year: 2000}" - - ndt = %{~N[2000-01-01 23:00:07.005] | calendar: Calendar.Holocene} - assert inspect(ndt == "~N[-0100-12-31 23:00:07.005] (HE)") end test "compare/2" do diff --git a/lib/elixir/test/elixir/calendar/time_test.exs b/lib/elixir/test/elixir/calendar/time_test.exs index 937bc3608..5c4bdb4db 100644 --- a/lib/elixir/test/elixir/calendar/time_test.exs +++ b/lib/elixir/test/elixir/calendar/time_test.exs @@ -10,11 +10,6 @@ defmodule TimeTest do assert to_string(~T[23:00:07.005]) == "23:00:07.005" end - test "inspect/2" do - holocene_time = %{~T[23:00:07.005] | calendar: Calendar.Holocene} - assert inspect(holocene_time) == "23:00:07.005" - end - test "Kernel.inspect/1" do assert inspect(~T[23:00:07.005]) == "~T[23:00:07.005]" end |