trailblazer-activity-dsl-linear 1.2.4 → 1.2.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
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