ExShopifySchema.Types (ExShopifySchema v2024.7.7)

View Source

This module provides utility functions for defining types.

Summary

Functions

Make sum type from a list of modules.

Functions

make_module_sum_type(modules, type)

@spec make_module_sum_type([module(), ...], atom()) :: Macro.t()

Make sum type from a list of modules.

defmodule Foo do
  @type t() :: :foo
end
defmodule Bar do
  @type t() :: :bar
end
defmodule Baz do
  @type t() :: :baz
end

iex> ExShopifySchema.Types.make_module_sum_type([Foo, Bar, Baz], :t)
quote do: Foo.t() | Bar.t() | Baz.t()

make_sum_type(types)

@spec make_sum_type([atom(), ...]) :: Macro.t()

Make sum type.

Example

iex> ExShopifySchema.Types.make_sum_type([:foo, :bar, :baz])
quote do: :foo | :bar | :baz

Usage

defmodule MyApp.MyType do
  @type t() :: unquote(ExShopifySchema.Types.make_sum_type([:foo, :bar, :baz]))
  # equals to
  @type t_equivalent() :: :foo | :bar | :baz
end