trailblazer-activity-dsl-linear 1.2.4 → 1.2.5

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 36059b6c848e46341ed7c120c6f3e96bdbea72ac6a5ca3d7c536fc17f64b194a
4
- data.tar.gz: bd31c9110032fd621e1f79880c6f7694480a8689b7371a9aec84b2ae5041f035
3
+ metadata.gz: b99e0c72f1c402fc56bf48c302d04d5749e47f159ce9d7b10a2537665a0af62e
4
+ data.tar.gz: f3c35842ae2631b358a1decaad27bb32785e578f0f99cf2597757c2e4485a120
5
5
  SHA512:
6
- metadata.gz: 29cbeca1196720b666f654436bbc58d330e3ad021f18fb247b1816d7a4ccb83d1378b3481ac425709a08807c0fb210f2a2d8a5c6971c75dda1fc7124e3d0b2bd
7
- data.tar.gz: 22d73328ebbac971f41a2247d2f5821eddf622c413ede67354ec64f74543f3779f6fe8a6900c3386a2b75d7b5a9f4e144c2c81229df7ff131e2ac0a2bf869400
6
+ metadata.gz: 2035d707ca689d84923de40eaccd48b08c355be9351172804dc45d80ded9a141088b26b2d7a464727c5b9c49082018d02085aa3754d0bdca19ad13c6bf70a161
7
+ data.tar.gz: cfdf092b175fdefd34a0321248aa95f4a5a8c768b18e3f23f9285be10c0f1c720dd633e061b9d079a60d610ef743ad6544597af0bf5adb3cf7cb53b6b9b91502
data/CHANGES.md CHANGED
@@ -1,3 +1,15 @@
1
+ # 1.2.5
2
+
3
+ * Fix a bug where, within a helper `Path()`, the last step couldn't
4
+ explicitly define additional `Output()`, e.g. for `:failure`.
5
+
6
+ ```ruby
7
+ ... => Path(connect_to: Track(:success)) do
8
+ step :upload,
9
+ Output(Trailblazer::Activity::Left, :failure) => Track(:failure) # FIXME: this configuration gets lost.
10
+ end
11
+ ```
12
+
1
13
  # 1.2.4
2
14
 
3
15
  * Fix a bug where using `fail_fast: true` (same with `:pass_fast`) would result in a
data/Gemfile CHANGED
@@ -5,7 +5,7 @@ gemspec
5
5
 
6
6
  gem "minitest-line"
7
7
 
8
- # gem "trailblazer-developer", path: "../trailblazer-developer"
8
+ gem "trailblazer-developer", path: "../trailblazer-developer"
9
9
  # gem "trailblazer-developer", github: "trailblazer/trailblazer-developer"
10
10
  # gem "trailblazer-declarative", path: "../trailblazer-declarative"
11
11
  # gem "trailblazer-activity", path: "../trailblazer-activity"
@@ -15,4 +15,4 @@ gem "minitest-line"
15
15
  # gem "benchmark-ips"
16
16
  # gem "stackprof"
17
17
  # gem "standard"
18
- # gem "trailblazer-core-utils", path: "../trailblazer-core-utils"
18
+ gem "trailblazer-core-utils", path: "../trailblazer-core-utils"
@@ -97,14 +97,29 @@ module Trailblazer
97
97
  # Connect last row of the {sequence} to the given step via its {Id}
98
98
  # Useful when steps needs to be inserted in between {Start} and {connect Id()}.
99
99
  private def connect_for_sequence(sequence, connect_to:)
100
- output, _ = sequence[-1][2][0].(sequence, sequence[-1]) # FIXME: the Forward() proc contains the row's Output, and the only current way to retrieve it is calling the search strategy. It should be Forward#to_h
100
+ last_step_on_path = sequence[-1]
101
+ output_searches = last_step_on_path[2]
102
+
103
+ last_step_outputs =
104
+ output_searches.collect do |search_strategy|
105
+ # TODO: introduce {search_strategy.to_h} so we don't need to execute it here.
106
+ output, _ = search_strategy.(sequence, last_step_on_path) # FIXME: the Forward() proc contains the row's Output, and the only current way to retrieve it is calling the search strategy. It should be Forward#to_h
107
+ output
108
+ end
109
+
110
+ # we want to reconnect the last step's {:success} output, everything else we keep.
111
+ success_output = last_step_outputs.find { |output| output.to_h[:semantic] == :success } or raise
112
+
113
+ # FIXME: what about End()?
114
+ success_search = Sequence::Search.ById(success_output, connect_to.value) if connect_to.instance_of?(Linear::Normalizer::OutputTuples::Id)
115
+ success_search = Sequence::Search.Forward(success_output, connect_to.color) if connect_to.instance_of?(Linear::Normalizer::OutputTuples::Track) # FIXME: use existing mapping logic!
116
+
117
+ success_output_index = last_step_outputs.index(success_output)
101
118
 
102
- # searches = [Search.ById(output, connect_to.value)]
103
- searches = [Sequence::Search.ById(output, connect_to.value)] if connect_to.instance_of?(Linear::Normalizer::OutputTuples::Id)
104
- searches = [Sequence::Search.Forward(output, connect_to.color)] if connect_to.instance_of?(Linear::Normalizer::OutputTuples::Track) # FIXME: use existing mapping logic!
119
+ output_searches[success_output_index] = success_search # replace the success search strategy. # DISCUSS: a bit cryptical with this index.
105
120
 
106
- row = sequence[-1]
107
- row = row[0..1] + [searches] + [row[3]] # FIXME: not mutating an array is so hard: we only want to replace the "searches" element, index 2
121
+ row = last_step_on_path
122
+ row = row[0..1] + [output_searches] + [row[3]] # FIXME: not mutating an array is so hard: we only want to replace the "searches" element, index 2
108
123
  row = Sequence::Row[*row]
109
124
 
110
125
  sequence[0..-2] + [row]
@@ -145,6 +145,7 @@ module Trailblazer
145
145
  )
146
146
  end
147
147
 
148
+ # TODO: remove this! it doesn't receive correct ciruit_options.
148
149
  # DISCUSS: should we remove this special case?
149
150
  # This handles
150
151
  # step task: :instance_method_exposing_circuit_interface
@@ -112,7 +112,6 @@ module Trailblazer
112
112
  TaskWrap.invoke(self, *args, **kws)
113
113
  end
114
114
  end # class << self
115
- # FIXME: do we want class << self?!
116
115
 
117
116
  module DSL
118
117
  module_function
@@ -3,7 +3,7 @@ module Trailblazer
3
3
  module Activity
4
4
  module DSL
5
5
  module Linear
6
- VERSION = "1.2.4"
6
+ VERSION = "1.2.5"
7
7
  end
8
8
  end
9
9
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: trailblazer-activity-dsl-linear
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.2.4
4
+ version: 1.2.5
5
5
  platform: ruby
6
6
  authors:
7
7
  - Nick Sutterer
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2023-07-03 00:00:00.000000000 Z
11
+ date: 2024-03-05 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: trailblazer-activity