trailblazer-activity-dsl-linear 0.3.5 → 0.4.0

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: 6d438f16110a2a03d05d08edfb0e74be8d92bd031b61818d0c6a87cbe500a9d0
4
- data.tar.gz: e4f769408c024853dee3c6b1f8a57a1e2276848c8d7e7e4a35d4e5174f8ffaf5
3
+ metadata.gz: e57f5b11cc754909282774d4dc5499c8fb2505ca28af24c3f89498fe72e0aba5
4
+ data.tar.gz: f50f83160e783086594ed01b434dc137137e37535798288a298d0d3d5634c62e
5
5
  SHA512:
6
- metadata.gz: 0c0df72aa24b1d7e93767d968d55a16c2f2193fd2819175a28822a5a178e0abb364768bac09a30bb41801b94084c9f44f2ea1fe0356db5a5d33b56f92c572430
7
- data.tar.gz: 88b45c45f818435b8484a1aec585a397df887fc8174bdc8e57d7993e905100025bb26642bfae3efdd83b8a5075a439ad11ea59270b6f9c8c6c1246a673c63c12
6
+ metadata.gz: f77f7e88ec86f36ae2be1c5488ebf3fde9d532b3f07c1d28f062437e9f0888ec04f58054635b0c7ee358828f77299b89ec792b6c208d81733686b404bc33304b
7
+ data.tar.gz: 56a9cb48da80927e80d85050867530042571b3a23be774dcec2844c358ab07b67b4df2e59ff32864eaa4e237511eb86512c6bb6b6de052d74b694449df6038a5
data/CHANGES.md CHANGED
@@ -1,3 +1,7 @@
1
+ # 0.4.0
2
+
3
+ * Support for Ruby 3.0.
4
+
1
5
  # 0.3.5
2
6
 
3
7
  * Retain custom wirings within subprocess while patching.
data/Gemfile CHANGED
@@ -5,7 +5,8 @@ gemspec
5
5
 
6
6
  gem "minitest-line"
7
7
 
8
- # gem "trailblazer-context", path: "../trailblazer-context"
8
+ gem "rubocop", require: false
9
+
9
10
  # gem "trailblazer-developer", path: "../trailblazer-developer"
10
11
  # gem "trailblazer-activity", path: "../trailblazer-activity"
11
12
  # gem "trailblazer-activity", path: "../circuit"
@@ -177,7 +177,7 @@ class Trailblazer::Activity
177
177
  # This is usually called from DSL methods such as {step}.
178
178
  def apply_adds_from_dsl(sequence, sequence_insert:, adds:, **options)
179
179
  # This is the ADDS for the actual task.
180
- task_add = {row: Sequence.create_row(options), insert: sequence_insert} # Linear::Insert.method(:Prepend), end_id
180
+ task_add = {row: Sequence.create_row(**options), insert: sequence_insert} # Linear::Insert.method(:Prepend), end_id
181
181
 
182
182
  Sequence.apply_adds(sequence, [task_add] + adds)
183
183
  end
@@ -62,7 +62,7 @@ module Trailblazer
62
62
 
63
63
  if task.is_a?(Symbol)
64
64
  # step task: :find, id: :load
65
- { **ctx[:options], id: (id || task), task: Trailblazer::Option( task ) }
65
+ { **ctx[:options], id: (id || task), task: Trailblazer::Option(task) }
66
66
  else
67
67
  # step task: Callable, ... (Subprocess, Proc, macros etc)
68
68
  ctx[:options] # NOOP
@@ -196,7 +196,7 @@ module Trailblazer
196
196
  def add_end(end_event, magnetic_to:, id:)
197
197
 
198
198
  options = Path::DSL.append_end_options(task: end_event, magnetic_to: magnetic_to, id: id)
199
- row = Linear::Sequence.create_row(options)
199
+ row = Linear::Sequence.create_row(**options)
200
200
 
201
201
  {
202
202
  row: row,
@@ -224,7 +224,7 @@ module Trailblazer
224
224
  end
225
225
 
226
226
  def input_output_dsl((ctx, flow_options), *)
227
- config = ctx.select { |k,v| [:input, :output].include?(k) } # TODO: optimize this, we don't have to go through the entire hash.
227
+ config = ctx.select { |k,v| [:input, :output, :output_with_outer_ctx].include?(k) } # TODO: optimize this, we don't have to go through the entire hash.
228
228
 
229
229
  return Trailblazer::Activity::Right, [ctx, flow_options] if config.size == 0 # no :input/:output passed.
230
230
 
@@ -30,7 +30,7 @@ module Trailblazer
30
30
  end
31
31
 
32
32
  def update_sequence(&block)
33
- @sequence = yield(to_h)
33
+ @sequence = yield(**to_h)
34
34
  end
35
35
 
36
36
  def update_options(fields)
@@ -31,7 +31,7 @@ module Trailblazer
31
31
  # Compute the sequence rows.
32
32
  options = normalizers.(type, normalizer_options: normalizer_options, options: task, user_options: options.merge(sequence: sequence))
33
33
 
34
- sequence = Activity::DSL::Linear::DSL.apply_adds_from_dsl(sequence, options)
34
+ sequence = Activity::DSL::Linear::DSL.apply_adds_from_dsl(sequence, **options)
35
35
  end
36
36
  end
37
37
 
@@ -98,10 +98,10 @@ module Trailblazer
98
98
  end
99
99
 
100
100
  # Injects {:exec_context} so that {:instance_method}s work.
101
- def call(args, circuit_options={})
101
+ def call(args, **circuit_options)
102
102
  @activity.(
103
103
  args,
104
- circuit_options.merge(exec_context: new)
104
+ **circuit_options.merge(exec_context: new)
105
105
  )
106
106
  end
107
107
 
@@ -4,15 +4,17 @@ module Trailblazer
4
4
  module Linear
5
5
  # Normalizer-steps to implement {:input} and {:output}
6
6
  # Returns an Extension instance to be thrown into the `step` DSL arguments.
7
- def self.VariableMapping(input: VariableMapping.default_input, output: VariableMapping.default_output)
7
+ def self.VariableMapping(input: VariableMapping.default_input, output: VariableMapping.default_output, output_with_outer_ctx: false)
8
8
  input =
9
9
  VariableMapping::Input::Scoped.new(
10
- Trailblazer::Option::KW( VariableMapping::filter_for(input) )
10
+ Trailblazer::Option(VariableMapping::filter_for(input))
11
11
  )
12
12
 
13
+ unscope_class = output_with_outer_ctx ? VariableMapping::Output::Unscoped::WithOuterContext : VariableMapping::Output::Unscoped
14
+
13
15
  output =
14
- VariableMapping::Output::Unscoped.new(
15
- Trailblazer::Option::KW( VariableMapping::filter_for(output) )
16
+ unscope_class.new(
17
+ Trailblazer::Option(VariableMapping::filter_for(output))
16
18
  )
17
19
 
18
20
  TaskWrap::Extension(
@@ -36,6 +38,7 @@ module Trailblazer
36
38
  ->(ctx, **) { ctx }
37
39
  end
38
40
 
41
+ # Returns a filter proc to be called in an Option.
39
42
  # @private
40
43
  def filter_for(filter)
41
44
  if filter.is_a?(::Array) || filter.is_a?(::Hash)
@@ -45,13 +48,24 @@ module Trailblazer
45
48
  end
46
49
  end
47
50
 
51
+ # @private
52
+ def output_option_for(option, pass_outer_ctx) # DISCUSS: not sure I like this.
53
+
54
+ return option if pass_outer_ctx
55
+ # OutputReceivingInnerCtxOnly =
56
+
57
+ # don't pass {outer_ctx}, only {inner_ctx}. this is the default.
58
+ return ->(inner_ctx, outer_ctx, **kws) { option.(inner_ctx, **kws) }
59
+ end
60
+
61
+
48
62
  module DSL
49
63
  # The returned filter compiles a new hash for Scoped/Unscoped that only contains
50
64
  # the desired i/o variables.
51
65
  def self.filter_from_dsl(map)
52
66
  hsh = DSL.hash_for(map)
53
67
 
54
- ->(incoming_ctx, kwargs) { Hash[hsh.collect { |from_name, to_name| [to_name, incoming_ctx[from_name]] }] }
68
+ ->(incoming_ctx, **kwargs) { Hash[hsh.collect { |from_name, to_name| [to_name, incoming_ctx[from_name]] }] }
55
69
  end
56
70
 
57
71
  def self.hash_for(ary)
@@ -69,7 +83,7 @@ module Trailblazer
69
83
 
70
84
  def call((original_ctx, flow_options), **circuit_options)
71
85
  Trailblazer::Context(
72
- @filter.(original_ctx, **circuit_options),
86
+ @filter.(original_ctx, keyword_arguments: original_ctx.to_hash, **circuit_options),
73
87
  {},
74
88
  flow_options[:context_options]
75
89
  )
@@ -87,9 +101,21 @@ module Trailblazer
87
101
 
88
102
  def call(new_ctx, (original_ctx, flow_options), **circuit_options)
89
103
  original_ctx.merge(
90
- @filter.(new_ctx, **circuit_options)
104
+ call_filter(new_ctx, [original_ctx, flow_options], **circuit_options)
91
105
  )
92
106
  end
107
+
108
+ def call_filter(new_ctx, (original_ctx, flow_options), **circuit_options)
109
+ # Pass {inner_ctx, **inner_ctx}
110
+ @filter.(new_ctx, keyword_arguments: new_ctx.to_hash, **circuit_options)
111
+ end
112
+
113
+ class WithOuterContext < Unscoped
114
+ def call_filter(new_ctx, (original_ctx, flow_options), **circuit_options)
115
+ # Pass {inner_ctx, outer_ctx, **inner_ctx}
116
+ @filter.(new_ctx, original_ctx, keyword_arguments: new_ctx.to_hash, **circuit_options)
117
+ end
118
+ end
93
119
  end
94
120
  end
95
121
  end # VariableMapping
@@ -3,7 +3,7 @@ module Trailblazer
3
3
  module Activity
4
4
  module DSL
5
5
  module Linear
6
- VERSION = "0.3.5"
6
+ VERSION = "0.4.0"
7
7
  end
8
8
  end
9
9
  end
@@ -2,7 +2,7 @@ module Trailblazer
2
2
  class Activity
3
3
  def self.FastTrack(options)
4
4
  Class.new(FastTrack) do
5
- initialize!(Railway::DSL::State.new(FastTrack::DSL.OptionsForState(options)))
5
+ initialize!(Railway::DSL::State.new(**FastTrack::DSL.OptionsForState(**options)))
6
6
  end
7
7
  end
8
8
 
@@ -142,7 +142,7 @@ module Trailblazer
142
142
  )
143
143
 
144
144
  def self.OptionsForState(normalizers: Normalizers, **options)
145
- options = Railway::DSL.OptionsForState(options).
145
+ options = Railway::DSL.OptionsForState(**options).
146
146
  merge(normalizers: normalizers)
147
147
 
148
148
  initial_sequence = FastTrack::DSL.initial_sequence(**options)
@@ -167,7 +167,7 @@ module Trailblazer
167
167
  include Activity::DSL::Linear::Helper
168
168
  extend Activity::DSL::Linear::Strategy
169
169
 
170
- initialize!(Railway::DSL::State.new(DSL.OptionsForState()))
170
+ initialize!(Railway::DSL::State.new(**DSL.OptionsForState()))
171
171
 
172
172
  end # FastTrack
173
173
  end
@@ -121,7 +121,7 @@ module Trailblazer
121
121
  end
122
122
 
123
123
  def append_end(sequence, **options)
124
- sequence = Linear::DSL.insert_task(sequence, **append_end_options(options))
124
+ sequence = Linear::DSL.insert_task(sequence, **append_end_options(**options))
125
125
  end
126
126
 
127
127
  def append_end_options(task:, magnetic_to:, id:, append_to: "End.success")
@@ -180,12 +180,12 @@ module Trailblazer
180
180
  include DSL::Linear::Helper
181
181
  extend DSL::Linear::Strategy
182
182
 
183
- initialize!(Path::DSL::State.new(DSL.OptionsForState()))
183
+ initialize!(Path::DSL::State.new(**DSL.OptionsForState()))
184
184
  end # Path
185
185
 
186
186
  def self.Path(options)
187
187
  Class.new(Path) do
188
- initialize!(Path::DSL::State.new(Path::DSL.OptionsForState(options)))
188
+ initialize!(Path::DSL::State.new(**Path::DSL.OptionsForState(**options)))
189
189
  end
190
190
  end
191
191
  end
@@ -135,7 +135,7 @@ module Trailblazer
135
135
  )
136
136
 
137
137
  def self.OptionsForState(normalizers: Normalizers, failure_end: Activity::End.new(semantic: :failure), **options)
138
- options = Path::DSL.OptionsForState(options).
138
+ options = Path::DSL.OptionsForState(**options).
139
139
  merge(normalizers: normalizers, failure_end: failure_end)
140
140
 
141
141
  initial_sequence = Railway::DSL.initial_sequence(failure_end: failure_end, **options)
@@ -161,13 +161,13 @@ module Trailblazer
161
161
  include DSL::Linear::Helper
162
162
  extend DSL::Linear::Strategy
163
163
 
164
- initialize!(Railway::DSL::State.new(DSL.OptionsForState()))
164
+ initialize!(Railway::DSL::State.new(**DSL.OptionsForState()))
165
165
 
166
166
  end # Railway
167
167
 
168
168
  def self.Railway(options)
169
169
  Class.new(Railway) do
170
- initialize!(Railway::DSL::State.new(Railway::DSL.OptionsForState(options)))
170
+ initialize!(Railway::DSL::State.new(**Railway::DSL.OptionsForState(**options)))
171
171
  end
172
172
  end
173
173
  end
@@ -19,12 +19,12 @@ Gem::Specification.new do |spec|
19
19
  end
20
20
  spec.require_paths = ["lib"]
21
21
 
22
- spec.add_dependency "trailblazer-activity", ">= 0.11.3", "< 1.0.0"
22
+ spec.add_dependency "trailblazer-activity", ">= 0.12.0", "< 1.0.0"
23
23
 
24
24
  spec.add_development_dependency "bundler"
25
25
  spec.add_development_dependency "minitest", "~> 5.0"
26
26
  spec.add_development_dependency "rake"
27
- spec.add_development_dependency "trailblazer-developer", ">= 0.0.3"
27
+ spec.add_development_dependency "trailblazer-developer", ">= 0.0.21"
28
28
 
29
29
  spec.required_ruby_version = '>= 2.1.0'
30
30
  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: 0.3.5
4
+ version: 0.4.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Nick Sutterer
8
- autorequire:
8
+ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2021-02-17 00:00:00.000000000 Z
11
+ date: 2021-03-03 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: trailblazer-activity
@@ -16,7 +16,7 @@ dependencies:
16
16
  requirements:
17
17
  - - ">="
18
18
  - !ruby/object:Gem::Version
19
- version: 0.11.3
19
+ version: 0.12.0
20
20
  - - "<"
21
21
  - !ruby/object:Gem::Version
22
22
  version: 1.0.0
@@ -26,7 +26,7 @@ dependencies:
26
26
  requirements:
27
27
  - - ">="
28
28
  - !ruby/object:Gem::Version
29
- version: 0.11.3
29
+ version: 0.12.0
30
30
  - - "<"
31
31
  - !ruby/object:Gem::Version
32
32
  version: 1.0.0
@@ -78,14 +78,14 @@ dependencies:
78
78
  requirements:
79
79
  - - ">="
80
80
  - !ruby/object:Gem::Version
81
- version: 0.0.3
81
+ version: 0.0.21
82
82
  type: :development
83
83
  prerelease: false
84
84
  version_requirements: !ruby/object:Gem::Requirement
85
85
  requirements:
86
86
  - - ">="
87
87
  - !ruby/object:Gem::Version
88
- version: 0.0.3
88
+ version: 0.0.21
89
89
  description: Simple DSL to define Trailblazer activities with arbitrary wirings.
90
90
  email:
91
91
  - apotonick@gmail.com
@@ -118,7 +118,7 @@ homepage: http://trailblazer.to
118
118
  licenses:
119
119
  - LGPL-3.0
120
120
  metadata: {}
121
- post_install_message:
121
+ post_install_message:
122
122
  rdoc_options: []
123
123
  require_paths:
124
124
  - lib
@@ -134,7 +134,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
134
134
  version: '0'
135
135
  requirements: []
136
136
  rubygems_version: 3.0.8
137
- signing_key:
137
+ signing_key:
138
138
  specification_version: 4
139
139
  summary: Simple DSL to define Trailblazer activities.
140
140
  test_files: []