@@ -43,38 +43,34 @@ defmodule Reactor.Builder.Input do
4343@ doc """
4444 Add a named input to the reactor.
4545 """
46- @ spec add_input ( Reactor . t ( ) , any , options ) :: { :ok , Reactor . t ( ) } | { :error , any }
47- def add_input ( reactor , name , options ) do
48- case validate_options ( options ) do
49- { :ok , options } when is_nil ( options . transform ) ->
50- reactor =
51- reactor
52- |> do_add_input ( name )
53- |> maybe_add_description ( name , options . description )
46+ @ spec add_input ( Reactor . t ( ) , any , options | transform ) :: { :ok , Reactor . t ( ) } | { :error , any }
47+ def add_input ( reactor , name , nil ) , do: add_input ( reactor , name , [ ] )
5448
55- { :ok , reactor }
56-
57- { :ok , options } ->
58- reactor =
59- reactor
60- |> do_add_input ( name )
61- |> add_input_transform ( name , options . transform )
62- |> maybe_add_description ( name , options . description )
63-
64- { :ok , reactor }
49+ def add_input ( reactor , name , options ) when is_list ( options ) do
50+ with { :ok , options } <- Spark.Options . validate ( options , @ options ) do
51+ reactor =
52+ reactor
53+ |> do_add_input ( name , options )
54+ |> maybe_add_input_transform ( name , options [ :transform ] )
6555
66- { :error , reason } ->
67- { :error , reason }
56+ { :ok , reactor }
6857end
6958end
7059
71- defp do_add_input ( reactor , name ) , do: % { reactor | inputs: [ name | reactor . inputs ] }
72- defp maybe_add_description ( reactor , _name , nil ) , do: reactor
60+ def add_input ( reactor , name , transform ) , do: add_input ( reactor , name , transform: transform )
61+
62+ defp do_add_input ( reactor , name , options ) do
63+ input = % Reactor.Input {
64+ name: name ,
65+ description: options [ :description ]
66+ }
67+
68+ % { reactor | inputs: [ input | reactor . inputs ] }
69+ end
7370
74- defp maybe_add_description ( reactor , name , description ) ,
75- do: % { reactor | input_descriptions: Map . put ( reactor . input_descriptions , name , description ) }
71+ defp maybe_add_input_transform ( reactor , _name , nil ) , do: reactor
7672
77- defp add_input_transform ( reactor , name , { module , options } = transform )
73+ defp maybe_add_input_transform ( reactor , name , { module , options } = transform )
7874when is_atom ( module ) and is_list ( options ) do
7975transform_step = % Step {
8076arguments: [ Argument . from_input ( :value , name ) ] ,
@@ -89,14 +85,6 @@ defmodule Reactor.Builder.Input do
8985% { reactor | steps: [ transform_step | reactor . steps ] }
9086end
9187
92- defp add_input_transform ( reactor , name , transform ) ,
93- do: add_input_transform ( reactor , name , { Step.Transform , fun: transform } )
94-
95- defp validate_options ( options ) when is_list ( options ) do
96- with { :ok , options } <- Spark.Options . validate ( options , @ options ) do
97- { :ok , Map . new ( options ) }
98- end
99- end
100-
101- defp validate_options ( transform ) , do: validate_options ( transform: transform )
88+ defp maybe_add_input_transform ( reactor , name , transform ) ,
89+ do: maybe_add_input_transform ( reactor , name , { Step.Transform , fun: transform } )
10290end