Packages
cqrs_tools
0.5.21
0.5.28
0.5.27
0.5.26
0.5.25
0.5.24
0.5.23
0.5.22
0.5.21
0.5.20
0.5.19
0.5.18
0.5.17
0.5.16
0.5.15
0.5.14
0.5.13
0.5.12
0.5.11
0.5.10
0.5.9
0.5.8
0.5.7
0.5.6
0.5.5
0.5.4
0.5.3
0.5.2
0.5.1
0.5.0
0.4.19
0.4.18
0.4.17
0.4.16
0.4.15
0.4.14
0.4.13
0.4.12
0.4.11
0.4.10
0.4.9
0.4.8
0.4.7
0.4.6
0.4.5
0.4.4
0.4.3
0.4.2
0.4.1
0.4.0
0.3.22
0.3.21
0.3.20
0.3.19
0.3.18
0.3.17
0.3.16
0.3.15
0.3.14
0.3.13
0.3.12
0.3.11
0.3.10
0.3.9
0.3.8
0.3.7
0.3.6
0.3.5
0.3.4
0.3.3
0.3.2
0.3.1
0.3.0
0.2.30
0.2.29
0.2.28
0.2.27
0.2.26
0.2.25
0.2.24
0.2.23
0.2.22
0.2.21
0.2.20
0.2.19
0.2.18
0.2.17
0.2.16
0.2.15
0.2.14
0.2.13
0.2.12
0.2.11
0.2.10
0.2.9
0.2.8
0.2.7
0.2.6
0.2.5
0.2.4
0.2.3
0.2.2
0.2.1
0.2.0
0.1.7
0.1.6
0.1.5
0.1.4
0.1.3
0.1.1
0.1.0
A collection of handy Elixir macros for CQRS applications.
Current section
Files
Jump to
Current section
Files
lib/cqrs/options.ex
defmodule Cqrs.Options do
@moduledoc false
def tag_option do
{:tag?, :boolean,
[
default: false,
description: "If `true`, the result will be tagged with an `:ok` or `:error` tuple."
]}
end
defmacro defaults do
quote do
Enum.map(@options, fn {name, _hint, opts} ->
{name, Keyword.get(opts, :default)}
end)
end
end
@doc """
Describes a supported option for this command.
## Options
* `:default` - this default value if the option is not provided.
* `:description` - The documentation for this option.
"""
@spec option(name :: atom(), {:enum, possible_values :: list()}, keyword()) :: any()
defmacro option(name, {:enum, possible_values}, opts)
when is_atom(name) and is_list(opts) and is_list(possible_values) do
quote do
opts = Keyword.put_new(unquote(opts), :default, nil)
@options {unquote(name), {:enum, unquote(possible_values)}, opts}
end
end
@spec option(name :: atom(), hint :: atom(), keyword()) :: any()
defmacro option(name, hint, opts) when is_atom(name) and is_list(opts) do
quote do
opts = Keyword.put_new(unquote(opts), :default, nil)
@options {unquote(name), unquote(hint), opts}
end
end
def normalize(%{} = options), do: Map.to_list(options)
def normalize(options) when is_list(options), do: options
end