Current section

Files

Jump to
apex lib apex format tuple.ex
Raw

lib/apex/format/tuple.ex

defimpl Apex.Format, for: Tuple do
import Apex.Format.Utils
alias Apex.Format.Seq
def format(data, options \\ []) do
do_format(data, options)
end
defp do_format({}, _options), do: "{}" <> new_line()
defp do_format(data, options) do
[record_name | record_detail] = Tuple.to_list(data)
if looks_like_a_record?(record_name, record_detail) do
format_record(record_name, record_detail, options)
else
Seq.format(Tuple.to_list(data), options, start_token: "{", end_token: "}")
end
end
defp looks_like_a_record?(name, detail)
defp looks_like_a_record?(name, detail) when is_atom(name) and not(name in [true, false, nil]) and length(detail) > 1, do: true
defp looks_like_a_record?(_name, _detail), do: false
defp format_record(name, detail, options) do
Seq.format(detail, options, start_token: "#{name}{", end_token: "}")
end
end