defmodule IsWhat do @moduledoc """ Documentation for `IsWhat`. """ @doc """ is_what?/1 Defines the type of the given data. ## Examples iex> IsWhat.is_what?(true) "true is boolean." """ @spec is_what?(any()) :: String.t() def is_what?(nil), do: "data is nil." def is_what?(data) when is_binary(data), do: "#{data} is binary." def is_what?(data) when is_boolean(data), do: "#{data} is boolean." def is_what?(data) when is_atom(data), do: "#{data} is atom." def is_what?(data) when is_tuple(data), do: "#{inspect(data)} is tuple." def is_what?(data) when is_list(data), do: "#{inspect(data)} is list." def is_what?(data) when is_map(data), do: "#{inspect(data)} is map." def is_what?(data) when is_integer(data), do: "#{data} is integer." def is_what?(data) when is_number(data), do: "#{data} is number." def is_what?(data) when is_struct(data), do: "#{data} is struct." end