summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJosé Valim <jose.valim@plataformatec.com.br>2019-09-24 12:01:09 +0200
committerJosé Valim <jose.valim@plataformatec.com.br>2019-09-24 12:01:52 +0200
commitb23b94e8b55a48891e908fc2951830e9d0a15ab1 (patch)
treef8f31699d938f2a16fd2e183f90526c5da420b1d
parent5f68e9b58f5576980328e12c93cb38939d387535 (diff)
downloadelixir-b23b94e8b55a48891e908fc2951830e9d0a15ab1.tar.gz
Revert "Add inspect/2 callback to Calendar (#9128)"
This reverts commit 23a68035be96717ca5f8fd20355bdb7bc5ed38f8.
-rw-r--r--lib/elixir/lib/calendar.ex44
-rw-r--r--lib/elixir/lib/calendar/date.ex8
-rw-r--r--lib/elixir/lib/calendar/datetime.ex42
-rw-r--r--lib/elixir/lib/calendar/iso.ex105
-rw-r--r--lib/elixir/lib/calendar/naive_datetime.ex33
-rw-r--r--lib/elixir/lib/calendar/time.ex25
-rw-r--r--lib/elixir/test/elixir/calendar/date_test.exs3
-rw-r--r--lib/elixir/test/elixir/calendar/datetime_test.exs19
-rw-r--r--lib/elixir/test/elixir/calendar/fakes.exs9
-rw-r--r--lib/elixir/test/elixir/calendar/holocene.exs53
-rw-r--r--lib/elixir/test/elixir/calendar/naive_datetime_test.exs3
-rw-r--r--lib/elixir/test/elixir/calendar/time_test.exs5
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