diff --git a/.tool-versions b/.tool-versions index b7c4c5b..3d664e3 100644 --- a/.tool-versions +++ b/.tool-versions @@ -1,2 +1,2 @@ -elixir 1.17.2-otp-27 -erlang 27.0.1 +elixir 1.19.5-otp-28 +erlang 28.3.1 diff --git a/lib/yacto/migration/structure.ex b/lib/yacto/migration/structure.ex index d20f817..3b844fc 100644 --- a/lib/yacto/migration/structure.ex +++ b/lib/yacto/migration/structure.ex @@ -191,7 +191,7 @@ defmodule Yacto.Migration.Structure do def to_string(value) do value - |> Inspect.Yacto.Migration.Structure.inspect(%Inspect.Opts{}) + |> Inspect.Yacto.Migration.Structure.inspect(%Inspect.Opts{limit: :infinity}) |> Inspect.Algebra.format(:infinity) |> IO.iodata_to_binary() end @@ -226,12 +226,23 @@ defimpl Inspect, for: Yacto.Migration.Structure do # マップをソートするオプションを付ける(Elixir 1.14 以上) opts = put_in(opts.custom_options[:sort_maps], true) - apply(Inspect.Map, :inspect, [ + # Elixir 1.19.0 以降: Inspect.Map.inspect_as_struct/4 を使用、結果は {doc, opts} + # Elixir 1.18.4 まで: Inspect.Map.inspect/4 を使用、結果は doc + function_name = + if function_exported?(Inspect.Map, :inspect, 4), + do: :inspect, + else: :inspect_as_struct + + apply(Inspect.Map, function_name, [ value, Inspect.Atom.inspect(Yacto.Migration.Structure, opts), infos, opts ]) + |> case do + {doc, _opts} -> doc + doc -> doc + end end end end