trailblazer-activity-dsl-linear 0.3.5 → 0.4.0

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: 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: []