callable_tree 0.3.8 → 0.3.9

Sign up to get free protection for your applications and to get access to all the features.
@@ -42,7 +42,7 @@ module CallableTree
42
42
  if recursive
43
43
  child_nodes
44
44
  .lazy
45
- .select { |node| node.internal? }
45
+ .select(&:internal?)
46
46
  .map { |node| node.find(recursive: true, &block) }
47
47
  .reject(&:nil?)
48
48
  .first
@@ -89,20 +89,18 @@ module CallableTree
89
89
  strategy.is_a?(Strategy::Seek)
90
90
  end
91
91
 
92
- def seek
93
- if seek?
92
+ def seek(terminable: true)
93
+ if strategy == Strategy::Seek.new(terminable: terminable)
94
94
  self
95
95
  else
96
- clone.tap do |node|
97
- node.strategy = Strategy::Seek.new
98
- end
96
+ clone.seek!(terminable: terminable)
99
97
  end
100
98
  end
101
99
 
102
- def seek!
103
- tap do |node|
104
- node.strategy = Strategy::Seek.new unless seek?
105
- end
100
+ def seek!(terminable: true)
101
+ self.strategy = Strategy::Seek.new(terminable: terminable)
102
+
103
+ self
106
104
  end
107
105
 
108
106
  alias seekable? seek?
@@ -113,20 +111,18 @@ module CallableTree
113
111
  strategy.is_a?(Strategy::Broadcast)
114
112
  end
115
113
 
116
- def broadcast
117
- if broadcast?
114
+ def broadcast(terminable: false)
115
+ if strategy == Strategy::Broadcast.new(terminable: terminable)
118
116
  self
119
117
  else
120
- clone.tap do |node|
121
- node.strategy = Strategy::Broadcast.new
122
- end
118
+ clone.broadcast!(terminable: terminable)
123
119
  end
124
120
  end
125
121
 
126
- def broadcast!
127
- tap do |node|
128
- node.strategy = Strategy::Broadcast.new unless broadcast?
129
- end
122
+ def broadcast!(terminable: false)
123
+ self.strategy = Strategy::Broadcast.new(terminable: terminable)
124
+
125
+ self
130
126
  end
131
127
 
132
128
  alias broadcastable? broadcast?
@@ -137,20 +133,18 @@ module CallableTree
137
133
  strategy.is_a?(Strategy::Compose)
138
134
  end
139
135
 
140
- def compose
141
- if compose?
136
+ def compose(terminable: false)
137
+ if strategy == Strategy::Compose.new(terminable: terminable)
142
138
  self
143
139
  else
144
- clone.tap do |node|
145
- node.strategy = Strategy::Compose.new
146
- end
140
+ clone.compose!(terminable: terminable)
147
141
  end
148
142
  end
149
143
 
150
- def compose!
151
- tap do |node|
152
- node.strategy = Strategy::Compose.new unless compose?
153
- end
144
+ def compose!(terminable: false)
145
+ self.strategy = Strategy::Compose.new(terminable: terminable)
146
+
147
+ self
154
148
  end
155
149
 
156
150
  alias composable? compose?
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module CallableTree
4
- VERSION = '0.3.8'
4
+ VERSION = '0.3.9'
5
5
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: callable_tree
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.8
4
+ version: 0.3.9
5
5
  platform: ruby
6
6
  authors:
7
7
  - jsmmr
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2022-05-05 00:00:00.000000000 Z
11
+ date: 2022-11-06 00:00:00.000000000 Z
12
12
  dependencies: []
13
13
  description: Builds a tree by linking callable nodes. The nodes that match the conditions
14
14
  are called in a chain from the root node to the leaf node. These are like nested
@@ -19,6 +19,7 @@ executables: []
19
19
  extensions: []
20
20
  extra_rdoc_files: []
21
21
  files:
22
+ - ".github/dependabot.yml"
22
23
  - ".github/workflows/build.yml"
23
24
  - ".github/workflows/codeql-analysis.yml"
24
25
  - ".gitignore"
@@ -34,7 +35,9 @@ files:
34
35
  - bin/console
35
36
  - bin/setup
36
37
  - callable_tree.gemspec
38
+ - examples/builder/external-verbosify.rb
37
39
  - examples/builder/hooks.rb
40
+ - examples/builder/identity.rb
38
41
  - examples/builder/internal-broadcastable.rb
39
42
  - examples/builder/internal-composable.rb
40
43
  - examples/builder/internal-seekable.rb
@@ -73,7 +76,7 @@ licenses:
73
76
  metadata:
74
77
  homepage_uri: https://github.com/jsmmr/ruby_callable_tree
75
78
  source_code_uri: https://github.com/jsmmr/ruby_callable_tree
76
- changelog_uri: https://github.com/jsmmr/ruby_callable_tree/blob/v0.3.8/CHANGELOG.md
79
+ changelog_uri: https://github.com/jsmmr/ruby_callable_tree/blob/v0.3.9/CHANGELOG.md
77
80
  rubygems_mfa_required: 'true'
78
81
  post_install_message:
79
82
  rdoc_options: []