Packages
reactor
0.9.0
1.0.2
1.0.1
1.0.0
0.17.0
0.16.0
0.15.6
0.15.5
0.15.4
0.15.3
0.15.2
0.15.1
0.15.0
0.14.0
0.13.3
0.13.2
0.13.1
0.13.0
0.12.1
0.12.0
0.11.0
0.10.3
0.10.2
0.10.1
0.10.0
0.9.1
0.9.0
0.8.5
0.8.4
0.8.3
0.8.2
0.8.1
0.8.0
0.7.0
0.6.0
0.5.2
0.5.1
0.5.0
0.4.1
0.4.0
0.3.5
0.3.4
0.3.3
0.3.2
0.3.1
0.3.0
0.2.4
0.2.3
0.2.2
0.2.1
0.2.0
0.1.0
An asynchronous, graph-based execution engine
Current section
Files
Jump to
Current section
Files
lib/reactor/argument/build.ex
defprotocol Reactor.Argument.Build do
@moduledoc """
A protocol which can be used to convert something into an argument.
"""
alias Reactor.Argument
@doc """
Convert the input into an argument.
"""
@spec build(t) :: {:ok, [Argument.t()]} | {:error, any}
def build(input)
end
defimpl Reactor.Argument.Build, for: Reactor.Argument do
alias Reactor.Argument
def build(argument), do: {:ok, [argument]}
end
defimpl Reactor.Argument.Build, for: Tuple do
alias Reactor.Argument
import Reactor.Utils
def build({name, {:input, source}}), do: {:ok, [Argument.from_input(name, source)]}
def build({name, {:result, source}}), do: {:ok, [Argument.from_result(name, source)]}
def build({name, value}), do: {:ok, [Argument.from_value(name, value)]}
def build(tuple), do: {:error, argument_error(:tuple, "contains a non-argument value", tuple)}
end