View Source Reactor.Dsl.Argument (reactor v0.3.0)

The struct used to store argument DSL entities.

See d:Reactor.step.argument.

Link to this section Summary

Functions

The input template helper for the Reactor DSL.

The result template helper for the Reactor DSL.

The value template helper for the Reactor DSL.

Link to this section Types

@type t() :: %Reactor.Dsl.Argument{
  __identifier__: any(),
  name: atom(),
  source:
    Reactor.Template.Input.t()
    | Reactor.Template.Result.t()
    | Reactor.Template.Value.t(),
  transform: nil | (any() -> any()) | {module(), keyword()} | mfa()
}

Link to this section Functions

@spec input(atom()) :: Reactor.Template.Input.t()

The input template helper for the Reactor DSL.

example

Example

defmodule ExampleReactor do
  use Reactor

  input :name

  step :greet do
    # here: --------↓↓↓↓↓
    argument :name, input(:name)
    run fn
      %{name: nil}, _, _ -> {:ok, "Hello, World!"}
      %{name: name}, _, _ -> {:ok, "Hello, #{name}!"}
    end
  end
end
@spec result(atom()) :: Reactor.Template.Result.t()

The result template helper for the Reactor DSL.

example

Example

defmodule ExampleReactor do
  use Reactor

  step :whom do
    run fn ->
      {:ok, Enum.random(["Marty", "Doc", "Jennifer", "Lorraine", "George", nil])}
    end
  end

  step :greet do
    # here: --------↓↓↓↓↓↓
    argument :name, result(:whom)
    run fn
      %{name: nil}, _, _ -> {:ok, "Hello, World!"}
      %{name: name}, _, _ -> {:ok, "Hello, #{name}!"}
    end
  end
end
@spec value(any()) :: Reactor.Template.Value.t()

The value template helper for the Reactor DSL.

example

Example

defmodule ExampleReactor do
  use Reactor

  input :number

  step :times_three do
    argument :lhs, input(:number)
    # here: -------↓↓↓↓↓
    argument :rhs, value(3)

    run fn args, _, _ ->
      {:ok, args.lhs * args.rhs}
    end
  end
end