callable_tree 0.3.8 → 0.3.9

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