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.
- checksums.yaml +4 -4
- data/.github/dependabot.yml +7 -0
- data/.github/workflows/build.yml +3 -5
- data/.github/workflows/codeql-analysis.yml +4 -4
- data/CHANGELOG.md +6 -0
- data/Gemfile.lock +3 -3
- data/README.md +183 -257
- data/examples/builder/external-verbosify.rb +87 -0
- data/examples/builder/identity.rb +91 -0
- data/examples/builder/internal-broadcastable.rb +11 -11
- data/examples/builder/internal-composable.rb +11 -11
- data/examples/builder/internal-seekable.rb +9 -15
- data/examples/builder/logging.rb +7 -13
- data/examples/class/external-verbosify.rb +2 -4
- data/examples/class/identity.rb +2 -4
- data/examples/class/internal-seekable.rb +2 -4
- data/examples/class/logging.rb +2 -4
- data/lib/callable_tree/node/internal/strategy/broadcast.rb +19 -2
- data/lib/callable_tree/node/internal/strategy/compose.rb +15 -3
- data/lib/callable_tree/node/internal/strategy/seek.rb +11 -1
- data/lib/callable_tree/node/internal/strategy.rb +10 -2
- data/lib/callable_tree/node/internal.rb +22 -28
- data/lib/callable_tree/version.rb +1 -1
- metadata +6 -3
@@ -42,7 +42,7 @@ module CallableTree
|
|
42
42
|
if recursive
|
43
43
|
child_nodes
|
44
44
|
.lazy
|
45
|
-
.select
|
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
|
92
|
+
def seek(terminable: true)
|
93
|
+
if strategy == Strategy::Seek.new(terminable: terminable)
|
94
94
|
self
|
95
95
|
else
|
96
|
-
clone.
|
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
|
-
|
104
|
-
|
105
|
-
|
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
|
114
|
+
def broadcast(terminable: false)
|
115
|
+
if strategy == Strategy::Broadcast.new(terminable: terminable)
|
118
116
|
self
|
119
117
|
else
|
120
|
-
clone.
|
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
|
-
|
128
|
-
|
129
|
-
|
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
|
136
|
+
def compose(terminable: false)
|
137
|
+
if strategy == Strategy::Compose.new(terminable: terminable)
|
142
138
|
self
|
143
139
|
else
|
144
|
-
clone.
|
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
|
-
|
152
|
-
|
153
|
-
|
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?
|
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.
|
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-
|
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.
|
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: []
|