Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit08c4d31

Browse files
authored
improvement!: Store inputs in their own struct (#269)
1 parent9147120 commit08c4d31

File tree

14 files changed

+59
-57
lines changed

14 files changed

+59
-57
lines changed

‎lib/reactor.ex‎

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,6 @@ defmodule Reactor do
4444
defstructcontext:%{},
4545
description:nil,
4646
id:nil,
47-
input_descriptions:%{},
4847
inputs:[],
4948
intermediate_results:%{},
5049
middleware:[],
@@ -144,8 +143,7 @@ defmodule Reactor do
144143
context:context,
145144
description:nil|String.t(),
146145
id:any,
147-
input_descriptions:%{atom=>String.t()},
148-
inputs:[atom],
146+
inputs:[Reactor.Input.t()],
149147
intermediate_results:%{any=>any},
150148
middleware:[Reactor.Middleware.t()],
151149
plan:nil|Graph.t(),

‎lib/reactor/builder/compose.ex‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -138,7 +138,7 @@ defmodule Reactor.Builder.Compose do
138138
end
139139

140140
defpreactor_inputs(reactor)whenis_struct(reactor),
141-
do:{:ok,MapSet.new(reactor.inputs)}
141+
do:{:ok,MapSet.new(reactor.inputs,&&1.name)}
142142

143143
defpreactor_inputs(reactor)whenis_atom(reactor)do
144144
with{:ok,reactor}<-Reactor.Info.to_struct(reactor)do

‎lib/reactor/builder/input.ex‎

Lines changed: 23 additions & 35 deletions
Original file line numberDiff line numberDiff line change
@@ -43,38 +43,34 @@ defmodule Reactor.Builder.Input do
4343
@doc"""
4444
Add a named input to the reactor.
4545
"""
46-
@specadd_input(Reactor.t(),any,options)::{:ok,Reactor.t()}|{:error,any}
47-
defadd_input(reactor,name,options)do
48-
casevalidate_options(options)do
49-
{:ok,options}whenis_nil(options.transform)->
50-
reactor=
51-
reactor
52-
|>do_add_input(name)
53-
|>maybe_add_description(name,options.description)
46+
@specadd_input(Reactor.t(),any,options|transform)::{:ok,Reactor.t()}|{:error,any}
47+
defadd_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+
defadd_input(reactor,name,options)whenis_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}
6857
end
6958
end
7059

71-
defpdo_add_input(reactor,name),do:%{reactor|inputs:[name|reactor.inputs]}
72-
defpmaybe_add_description(reactor,_name,nil),do:reactor
60+
defadd_input(reactor,name,transform),do:add_input(reactor,name,transform:transform)
61+
62+
defpdo_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-
defpmaybe_add_description(reactor,name,description),
75-
do:%{reactor|input_descriptions:Map.put(reactor.input_descriptions,name,description)}
71+
defpmaybe_add_input_transform(reactor,_name,nil),do:reactor
7672

77-
defpadd_input_transform(reactor,name,{module,options}=transform)
73+
defpmaybe_add_input_transform(reactor,name,{module,options}=transform)
7874
whenis_atom(module)andis_list(options)do
7975
transform_step=%Step{
8076
arguments:[Argument.from_input(:value,name)],
@@ -89,14 +85,6 @@ defmodule Reactor.Builder.Input do
8985
%{reactor|steps:[transform_step|reactor.steps]}
9086
end
9187

92-
defpadd_input_transform(reactor,name,transform),
93-
do:add_input_transform(reactor,name,{Step.Transform,fun:transform})
94-
95-
defpvalidate_options(options)whenis_list(options)do
96-
with{:ok,options}<-Spark.Options.validate(options,@options)do
97-
{:ok,Map.new(options)}
98-
end
99-
end
100-
101-
defpvalidate_options(transform),do:validate_options(transform:transform)
88+
defpmaybe_add_input_transform(reactor,name,transform),
89+
do:maybe_add_input_transform(reactor,name,{Step.Transform,fun:transform})
10290
end

‎lib/reactor/executor/init.ex‎

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -51,11 +51,11 @@ defmodule Reactor.Executor.Init do
5151
end
5252

5353
defpvalidate_inputs(reactor,inputs)do
54-
valid_input_names=MapSet.new(reactor.inputs)
54+
valid_input_names=MapSet.new(reactor.inputs,&&1.name)
5555
provided_input_names=inputs|>Map.keys()|>MapSet.new()
5656

5757
ifMapSet.subset?(valid_input_names,provided_input_names)do
58-
{:ok,Map.take(inputs,reactor.inputs)}
58+
{:ok,Map.take(inputs,Enum.to_list(valid_input_names))}
5959
else
6060
missing_inputs=
6161
valid_input_names

‎lib/reactor/input.ex‎

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
# SPDX-FileCopyrightText: 2023 James Harton, Zach Daniel, Alembic Pty and contributors
2+
# SPDX-FileCopyrightText: 2023 reactor contributors <https://github.com/ash-project/reactor/graphs.contributors>
3+
#
4+
# SPDX-License-Identifier: MIT
5+
6+
defmoduleReactor.Inputdo
7+
@moduledoc"""
8+
Reactor's internal representation for inputs.
9+
"""
10+
defstruct[:name,:description]
11+
12+
@typet::%__MODULE__{
13+
name:atom,
14+
description:nil|String.t()
15+
}
16+
end

‎lib/reactor/mermaid/reactor.ex‎

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -57,24 +57,24 @@ defmodule Reactor.Mermaid.Reactor do
5757
|>map_while_ok(&generate_input(&1,reactor,options))
5858
end
5959

60-
defpgenerate_input(input_name,reactor,options)do
61-
id=mermaid_id({reactor.id,input_name},:input)
60+
defpgenerate_input(input,reactor,options)do
61+
id=mermaid_id({reactor.id,input.name},:input)
6262

6363
content=
6464
ifoptions[:describe?]do
6565
[
6666
id,
6767
">\"`",
6868
"**Input ",
69-
to_string(input_name),
69+
to_string(input.name),
7070
"**",
7171
"\n",
72-
md_escape(Map.get(reactor.input_descriptions,input_name)),
72+
md_escape(input.description),
7373
"`\"]",
7474
"\n"
7575
]
7676
else
77-
[id,">\"Input ",to_string(input_name),"\"]\n"]
77+
[id,">\"Input ",to_string(input.name),"\"]\n"]
7878
end
7979

8080
{:ok,%Node{id:id,pre:content}}

‎lib/reactor/step/around/mermaid.ex‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ defmodule Reactor.Step.Around.Mermaid do
2020
links=
2121
reactor.inputs
2222
|>Enum.map(fninput->
23-
[node.id,"-->",mermaid_id({reactor.id,input},:input),"\n"]
23+
[node.id,"-->",mermaid_id({reactor.id,input.name},:input),"\n"]
2424
end)
2525
|>Enum.concat([inner_return_id,"-->",node.id,"\n"])
2626

‎lib/reactor/step/compose/mermaid.ex‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@ defmodule Reactor.Step.Compose.Mermaid do
2828
links=
2929
reactor.inputs
3030
|>Enum.map(fninput->
31-
[node.id,"-->",mermaid_id({reactor.id,input},:input),"\n"]
31+
[node.id,"-->",mermaid_id({reactor.id,input.name},:input),"\n"]
3232
end)
3333
|>Enum.concat([inner_return_id,"-->",node.id,"\n"])
3434

‎lib/reactor/step/group/mermaid.ex‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ defmodule Reactor.Step.Group.Mermaid do
2020
links=
2121
reactor.inputs
2222
|>Enum.map(fninput->
23-
[node.id,"-->",mermaid_id({reactor.id,input},:input),"\n"]
23+
[node.id,"-->",mermaid_id({reactor.id,input.name},:input),"\n"]
2424
end)
2525
|>Enum.concat([inner_return_id,"-->",node.id,"\n"])
2626

‎lib/reactor/step/map/mermaid.ex‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@ defmodule Reactor.Step.Map.Mermaid do
2525
links=
2626
reactor.inputs
2727
|>Enum.map(fninput->
28-
[node.id,"-->",mermaid_id({reactor.id,input},:input),"\n"]
28+
[node.id,"-->",mermaid_id({reactor.id,input.name},:input),"\n"]
2929
end)
3030
|>Enum.concat([inner_return_id,"-->",node.id,"\n"])
3131

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp