message_suggestions.ex (1031B)
1 defmodule Absinthe.Phase.Document.Validation.Utils.MessageSuggestions do 2 @moduledoc false 3 @suggest 5 4 5 @doc """ 6 Generate an suggestions message for a incorrect field 7 """ 8 def suggest_message(suggestions) do 9 " Did you mean " <> to_quoted_or_list(suggestions |> Enum.take(@suggest)) <> "?" 10 end 11 12 def suggest_fragment_message(suggestions) do 13 " Did you mean to use an inline fragment on " <> 14 to_quoted_or_list(suggestions |> Enum.take(@suggest)) <> "?" 15 end 16 17 defp to_quoted_or_list([a]), do: ~s("#{a}") 18 defp to_quoted_or_list([a, b]), do: ~s("#{a}" or "#{b}") 19 defp to_quoted_or_list(other), do: to_longer_quoted_or_list(other) 20 21 defp to_longer_quoted_or_list(list, acc \\ "") 22 defp to_longer_quoted_or_list([word], acc), do: acc <> ~s(, or "#{word}") 23 24 defp to_longer_quoted_or_list([word | rest], "") do 25 rest 26 |> to_longer_quoted_or_list(~s("#{word}")) 27 end 28 29 defp to_longer_quoted_or_list([word | rest], acc) do 30 rest 31 |> to_longer_quoted_or_list(acc <> ~s(, "#{word}")) 32 end 33 end