lib/icon/schema/types/string.ex

defmodule Icon.Schema.Types.String do
  @moduledoc """
  This module defines an ICON 2.0 string.
  """
  use Icon.Schema.Type

  @typedoc """
  A string.
  """
  @type t :: binary()

  @spec load(any()) :: {:ok, t()} | :error
  @impl Icon.Schema.Type
  def load(value)
  def load(str) when is_binary(str), do: {:ok, str}
  def load(_value), do: :error

  @spec dump(any()) :: {:ok, t()} | :error
  @impl Icon.Schema.Type
  defdelegate dump(str), to: __MODULE__, as: :load
end