rubytree 0.9.7 → 2.0.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 +5 -5
- data/API-CHANGES.md +153 -0
- data/Gemfile +2 -13
- data/Gemfile.lock +60 -61
- data/History.md +410 -0
- data/LICENSE.md +1 -2
- data/README.md +24 -28
- data/Rakefile +65 -48
- data/TODO.org +19 -15
- data/examples/example_basic.rb +19 -12
- data/lib/rubytree.rb +3 -4
- data/lib/tree/binarytree.rb +27 -27
- data/lib/tree/tree_deps.rb +9 -12
- data/lib/tree/utils/hash_converter.rb +127 -121
- data/lib/tree/utils/json_converter.rb +81 -79
- data/lib/tree/utils/metrics_methods.rb +18 -48
- data/lib/tree/utils/path_methods.rb +15 -17
- data/lib/tree/utils/tree_merge_handler.rb +79 -80
- data/lib/tree/utils/utils.rb +9 -6
- data/lib/tree/version.rb +3 -5
- data/lib/tree.rb +194 -177
- data/rubytree.gemspec +67 -44
- data/spec/spec_helper.rb +5 -3
- data/spec/tree_spec.rb +136 -37
- data/test/run_test.rb +9 -8
- data/test/test_binarytree.rb +86 -105
- data/test/test_rubytree_require.rb +4 -5
- data/test/test_subclassed_node.rb +5 -26
- data/test/test_thread_and_fiber.rb +13 -16
- data/test/test_tree.rb +577 -657
- metadata +142 -55
- data/API-CHANGES.rdoc +0 -99
- data/History.rdoc +0 -303
- data/TAGS +0 -248
- data/gem_graph.png +0 -0
- data/lib/tree/utils/camel_case_method_handler.rb +0 -79
- data/setup.rb +0 -1585
metadata
CHANGED
@@ -1,87 +1,127 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: rubytree
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 2.0.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Anupam Sengupta
|
8
|
-
autorequire:
|
8
|
+
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2022-06-21 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
|
-
name:
|
14
|
+
name: json
|
15
15
|
requirement: !ruby/object:Gem::Requirement
|
16
16
|
requirements:
|
17
17
|
- - "~>"
|
18
18
|
- !ruby/object:Gem::Version
|
19
|
-
version: '0
|
19
|
+
version: '2.0'
|
20
|
+
- - ">"
|
21
|
+
- !ruby/object:Gem::Version
|
22
|
+
version: 2.3.1
|
20
23
|
type: :runtime
|
21
24
|
prerelease: false
|
22
25
|
version_requirements: !ruby/object:Gem::Requirement
|
23
26
|
requirements:
|
24
27
|
- - "~>"
|
25
28
|
- !ruby/object:Gem::Version
|
26
|
-
version: '0
|
29
|
+
version: '2.0'
|
30
|
+
- - ">"
|
31
|
+
- !ruby/object:Gem::Version
|
32
|
+
version: 2.3.1
|
27
33
|
- !ruby/object:Gem::Dependency
|
28
|
-
name:
|
34
|
+
name: bundler
|
29
35
|
requirement: !ruby/object:Gem::Requirement
|
30
36
|
requirements:
|
31
37
|
- - "~>"
|
32
38
|
- !ruby/object:Gem::Version
|
33
|
-
version: '
|
34
|
-
type: :
|
39
|
+
version: '2.3'
|
40
|
+
type: :development
|
35
41
|
prerelease: false
|
36
42
|
version_requirements: !ruby/object:Gem::Requirement
|
37
43
|
requirements:
|
38
44
|
- - "~>"
|
39
45
|
- !ruby/object:Gem::Version
|
40
|
-
version: '
|
46
|
+
version: '2.3'
|
41
47
|
- !ruby/object:Gem::Dependency
|
42
|
-
name:
|
48
|
+
name: rake
|
43
49
|
requirement: !ruby/object:Gem::Requirement
|
44
50
|
requirements:
|
45
51
|
- - "~>"
|
46
52
|
- !ruby/object:Gem::Version
|
47
|
-
version: '
|
53
|
+
version: '13.0'
|
48
54
|
type: :development
|
49
55
|
prerelease: false
|
50
56
|
version_requirements: !ruby/object:Gem::Requirement
|
51
57
|
requirements:
|
52
58
|
- - "~>"
|
53
59
|
- !ruby/object:Gem::Version
|
54
|
-
version: '
|
60
|
+
version: '13.0'
|
55
61
|
- !ruby/object:Gem::Dependency
|
56
62
|
name: rdoc
|
57
63
|
requirement: !ruby/object:Gem::Requirement
|
58
64
|
requirements:
|
59
65
|
- - "~>"
|
60
66
|
- !ruby/object:Gem::Version
|
61
|
-
version: '
|
67
|
+
version: '6.0'
|
62
68
|
type: :development
|
63
69
|
prerelease: false
|
64
70
|
version_requirements: !ruby/object:Gem::Requirement
|
65
71
|
requirements:
|
66
72
|
- - "~>"
|
67
73
|
- !ruby/object:Gem::Version
|
68
|
-
version: '
|
74
|
+
version: '6.0'
|
69
75
|
- !ruby/object:Gem::Dependency
|
70
|
-
name:
|
76
|
+
name: rspec
|
71
77
|
requirement: !ruby/object:Gem::Requirement
|
72
78
|
requirements:
|
73
79
|
- - "~>"
|
74
80
|
- !ruby/object:Gem::Version
|
75
|
-
version: '0
|
81
|
+
version: '3.0'
|
82
|
+
- - ">"
|
83
|
+
- !ruby/object:Gem::Version
|
84
|
+
version: '3.10'
|
76
85
|
type: :development
|
77
86
|
prerelease: false
|
78
87
|
version_requirements: !ruby/object:Gem::Requirement
|
79
88
|
requirements:
|
80
89
|
- - "~>"
|
81
90
|
- !ruby/object:Gem::Version
|
82
|
-
version: '0
|
91
|
+
version: '3.0'
|
92
|
+
- - ">"
|
93
|
+
- !ruby/object:Gem::Version
|
94
|
+
version: '3.10'
|
83
95
|
- !ruby/object:Gem::Dependency
|
84
96
|
name: rtagstask
|
97
|
+
requirement: !ruby/object:Gem::Requirement
|
98
|
+
requirements:
|
99
|
+
- - "~>"
|
100
|
+
- !ruby/object:Gem::Version
|
101
|
+
version: 0.0.4
|
102
|
+
type: :development
|
103
|
+
prerelease: false
|
104
|
+
version_requirements: !ruby/object:Gem::Requirement
|
105
|
+
requirements:
|
106
|
+
- - "~>"
|
107
|
+
- !ruby/object:Gem::Version
|
108
|
+
version: 0.0.4
|
109
|
+
- !ruby/object:Gem::Dependency
|
110
|
+
name: rubocop
|
111
|
+
requirement: !ruby/object:Gem::Requirement
|
112
|
+
requirements:
|
113
|
+
- - "~>"
|
114
|
+
- !ruby/object:Gem::Version
|
115
|
+
version: '1.0'
|
116
|
+
type: :development
|
117
|
+
prerelease: false
|
118
|
+
version_requirements: !ruby/object:Gem::Requirement
|
119
|
+
requirements:
|
120
|
+
- - "~>"
|
121
|
+
- !ruby/object:Gem::Version
|
122
|
+
version: '1.0'
|
123
|
+
- !ruby/object:Gem::Dependency
|
124
|
+
name: rubocop-rake
|
85
125
|
requirement: !ruby/object:Gem::Requirement
|
86
126
|
requirements:
|
87
127
|
- - "~>"
|
@@ -95,43 +135,76 @@ dependencies:
|
|
95
135
|
- !ruby/object:Gem::Version
|
96
136
|
version: '0.0'
|
97
137
|
- !ruby/object:Gem::Dependency
|
98
|
-
name: rspec
|
138
|
+
name: rubocop-rspec
|
99
139
|
requirement: !ruby/object:Gem::Requirement
|
100
140
|
requirements:
|
101
141
|
- - "~>"
|
102
142
|
- !ruby/object:Gem::Version
|
103
|
-
version: '
|
143
|
+
version: '2.0'
|
104
144
|
type: :development
|
105
145
|
prerelease: false
|
106
146
|
version_requirements: !ruby/object:Gem::Requirement
|
107
147
|
requirements:
|
108
148
|
- - "~>"
|
109
149
|
- !ruby/object:Gem::Version
|
110
|
-
version: '
|
150
|
+
version: '2.0'
|
151
|
+
- !ruby/object:Gem::Dependency
|
152
|
+
name: test-unit
|
153
|
+
requirement: !ruby/object:Gem::Requirement
|
154
|
+
requirements:
|
155
|
+
- - "~>"
|
156
|
+
- !ruby/object:Gem::Version
|
157
|
+
version: '3.0'
|
158
|
+
type: :development
|
159
|
+
prerelease: false
|
160
|
+
version_requirements: !ruby/object:Gem::Requirement
|
161
|
+
requirements:
|
162
|
+
- - "~>"
|
163
|
+
- !ruby/object:Gem::Version
|
164
|
+
version: '3.0'
|
165
|
+
- !ruby/object:Gem::Dependency
|
166
|
+
name: yard
|
167
|
+
requirement: !ruby/object:Gem::Requirement
|
168
|
+
requirements:
|
169
|
+
- - "~>"
|
170
|
+
- !ruby/object:Gem::Version
|
171
|
+
version: '0.0'
|
172
|
+
- - ">="
|
173
|
+
- !ruby/object:Gem::Version
|
174
|
+
version: 0.9.20
|
175
|
+
type: :development
|
176
|
+
prerelease: false
|
177
|
+
version_requirements: !ruby/object:Gem::Requirement
|
178
|
+
requirements:
|
179
|
+
- - "~>"
|
180
|
+
- !ruby/object:Gem::Version
|
181
|
+
version: '0.0'
|
182
|
+
- - ">="
|
183
|
+
- !ruby/object:Gem::Version
|
184
|
+
version: 0.9.20
|
111
185
|
description: |2+
|
186
|
+
RubyTree is a pure Ruby implementation of the generic tree data
|
187
|
+
structure. It provides a node-based model to store named nodes in the tree,
|
188
|
+
and provides simple APIs to access, modify and traverse the structure.
|
112
189
|
|
113
|
-
|
114
|
-
|
115
|
-
|
190
|
+
The implementation is node-centric, where individual nodes in the tree are
|
191
|
+
the primary structural elements. All common tree-traversal methods
|
192
|
+
(pre-order, post-order, and breadth-first) are supported.
|
116
193
|
|
117
|
-
The
|
118
|
-
|
119
|
-
post-order, and breadth-first) are supported.
|
120
|
-
|
121
|
-
The library mixes in the Enumerable and Comparable modules to allow access to
|
122
|
-
the tree as a standard collection (iteration, comparison, etc.).
|
194
|
+
The library mixes in the Enumerable and Comparable modules to allow access
|
195
|
+
to the tree as a standard collection (iteration, comparison, etc.).
|
123
196
|
|
124
197
|
A Binary tree is also provided, which provides the in-order traversal in
|
125
198
|
addition to the other methods.
|
126
199
|
|
127
|
-
RubyTree supports importing from, and exporting to JSON, and also supports
|
128
|
-
Ruby's standard object marshaling.
|
200
|
+
RubyTree supports importing from, and exporting to JSON, and also supports
|
201
|
+
the Ruby's standard object marshaling.
|
129
202
|
|
130
203
|
This is a BSD licensed open source project, and is hosted at
|
131
|
-
|
132
|
-
|
204
|
+
<https://github.com/evolve75/RubyTree>, and is available as a standard gem
|
205
|
+
from <https://rubygems.org/gems/rubytree>.
|
133
206
|
|
134
|
-
The home page for RubyTree is at http://rubytree.anupamsg.me
|
207
|
+
The home page for RubyTree is at <http://rubytree.anupamsg.me>.
|
135
208
|
|
136
209
|
email: anupamsg@gmail.com
|
137
210
|
executables: []
|
@@ -139,26 +212,23 @@ extensions: []
|
|
139
212
|
extra_rdoc_files:
|
140
213
|
- README.md
|
141
214
|
- LICENSE.md
|
142
|
-
- API-CHANGES.
|
143
|
-
- History.
|
215
|
+
- API-CHANGES.md
|
216
|
+
- History.md
|
144
217
|
files:
|
145
218
|
- ".gemtest"
|
146
|
-
- API-CHANGES.
|
219
|
+
- API-CHANGES.md
|
147
220
|
- Gemfile
|
148
221
|
- Gemfile.lock
|
149
|
-
- History.
|
222
|
+
- History.md
|
150
223
|
- LICENSE.md
|
151
224
|
- README.md
|
152
225
|
- Rakefile
|
153
|
-
- TAGS
|
154
226
|
- TODO.org
|
155
227
|
- examples/example_basic.rb
|
156
|
-
- gem_graph.png
|
157
228
|
- lib/rubytree.rb
|
158
229
|
- lib/tree.rb
|
159
230
|
- lib/tree/binarytree.rb
|
160
231
|
- lib/tree/tree_deps.rb
|
161
|
-
- lib/tree/utils/camel_case_method_handler.rb
|
162
232
|
- lib/tree/utils/hash_converter.rb
|
163
233
|
- lib/tree/utils/json_converter.rb
|
164
234
|
- lib/tree/utils/metrics_methods.rb
|
@@ -167,7 +237,6 @@ files:
|
|
167
237
|
- lib/tree/utils/utils.rb
|
168
238
|
- lib/tree/version.rb
|
169
239
|
- rubytree.gemspec
|
170
|
-
- setup.rb
|
171
240
|
- spec/spec_helper.rb
|
172
241
|
- spec/tree_spec.rb
|
173
242
|
- test/run_test.rb
|
@@ -178,19 +247,38 @@ files:
|
|
178
247
|
- test/test_tree.rb
|
179
248
|
homepage: http://rubytree.anupamsg.me
|
180
249
|
licenses:
|
181
|
-
- BSD
|
182
|
-
metadata:
|
250
|
+
- BSD-3-Clause-Clear
|
251
|
+
metadata:
|
252
|
+
rubygems_mfa_required: 'true'
|
183
253
|
post_install_message: |2
|
184
254
|
========================================================================
|
185
255
|
Thank you for installing RubyTree.
|
186
256
|
|
187
|
-
Note::
|
257
|
+
Note::
|
258
|
+
|
259
|
+
- 2.0.0 is a major release with BREAKING API changes.
|
260
|
+
See `API-CHANGES.md` for details.
|
261
|
+
|
262
|
+
- `Tree::TreeNode#depth` method has been removed (it was broken).
|
263
|
+
|
264
|
+
- Support for `CamelCase` methods names has bee removed.
|
265
|
+
|
266
|
+
- The predicate methods no longer have `is_` or `has_` prefixes. However,
|
267
|
+
aliases with these prefixes exist to support existing client code.
|
268
|
+
|
269
|
+
- Use of integers as node names does not require the optional
|
270
|
+
`num_as_name` flag.
|
271
|
+
|
272
|
+
- `structured_warnings` is no longer a dependency.
|
273
|
+
|
274
|
+
- Explicit support for rbx Ruby has been removed.
|
188
275
|
|
189
|
-
Details of the API changes are documented in the API-CHANGES file.
|
190
276
|
========================================================================
|
191
277
|
rdoc_options:
|
192
278
|
- "--title"
|
193
|
-
- Rubytree Documentation
|
279
|
+
- 'Rubytree Documentation: rubytree-2.0.0'
|
280
|
+
- "--main"
|
281
|
+
- README.md
|
194
282
|
- "--quiet"
|
195
283
|
require_paths:
|
196
284
|
- lib
|
@@ -198,21 +286,20 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
198
286
|
requirements:
|
199
287
|
- - ">="
|
200
288
|
- !ruby/object:Gem::Version
|
201
|
-
version:
|
289
|
+
version: '2.6'
|
202
290
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
203
291
|
requirements:
|
204
292
|
- - ">="
|
205
293
|
- !ruby/object:Gem::Version
|
206
294
|
version: '0'
|
207
295
|
requirements: []
|
208
|
-
|
209
|
-
|
210
|
-
signing_key:
|
296
|
+
rubygems_version: 3.1.4
|
297
|
+
signing_key:
|
211
298
|
specification_version: 4
|
212
|
-
summary: A generic tree data structure.
|
299
|
+
summary: A generic tree data structure for Ruby.
|
213
300
|
test_files:
|
214
301
|
- test/test_binarytree.rb
|
215
|
-
- test/test_rubytree_require.rb
|
216
302
|
- test/test_subclassed_node.rb
|
217
|
-
- test/test_thread_and_fiber.rb
|
218
303
|
- test/test_tree.rb
|
304
|
+
- test/test_thread_and_fiber.rb
|
305
|
+
- test/test_rubytree_require.rb
|
data/API-CHANGES.rdoc
DELETED
@@ -1,99 +0,0 @@
|
|
1
|
-
# @markup rdoc
|
2
|
-
|
3
|
-
= API Changes in RubyTree
|
4
|
-
|
5
|
-
This file documents various API level changes that have been made to the
|
6
|
-
RubyTree package.
|
7
|
-
|
8
|
-
Note: API level changes are expected to reduce dramatically after the 1.x
|
9
|
-
release. In most cases, an alternative will be provided to ensure relatively
|
10
|
-
smooth transition to the new APIs.
|
11
|
-
|
12
|
-
== Release 0.9.5 Changes
|
13
|
-
|
14
|
-
- The {Tree::TreeNode#add} method now provides 'move' semantics, if a child
|
15
|
-
which is on an existing tree is added to another tree, or location on the same
|
16
|
-
tree. In this situation, the child node is removed from its old position, and
|
17
|
-
added to the new parent node. After the add operation is complete, the child
|
18
|
-
no longer exists on the old tree/location.
|
19
|
-
|
20
|
-
== Release 0.9.3 Changes
|
21
|
-
|
22
|
-
- The validation for unique node names has changed in the {Tree::TreeNode#add}
|
23
|
-
method. RubyTree no longer enforces globally unique names. The node-names need
|
24
|
-
to be unique only between the sibling nodes.
|
25
|
-
|
26
|
-
== Release 0.9.0 Changes
|
27
|
-
|
28
|
-
- New post-ordered traversal via the {Tree::TreeNode#postordered_each} method.
|
29
|
-
|
30
|
-
- The Binary Tree implementation now supports in-order traversal via the
|
31
|
-
{Tree::BinaryTreeNode#inordered_each} method.
|
32
|
-
|
33
|
-
- RubyTree now mixes in the {http://ruby-doc.org/core-1.8.7/Comparable.html
|
34
|
-
Comparable} module.
|
35
|
-
|
36
|
-
- The traversal methods ({Tree::TreeNode#each},
|
37
|
-
{Tree::TreeNode#preordered_each}, {Tree::TreeNode#postordered_each} and
|
38
|
-
{Tree::TreeNode#breadth_each}) now correctly return an
|
39
|
-
{http://ruby-doc.org/core-1.8.7/Enumerable.html Enumerator} as the return
|
40
|
-
value when no block is given, and return the receiver node if a block was
|
41
|
-
provided. This is consistent with how the standard Ruby collections work.
|
42
|
-
|
43
|
-
== Release 0.8.3 Changes
|
44
|
-
|
45
|
-
- {Tree::TreeNode#siblings} will now return an empty array for the root node.
|
46
|
-
|
47
|
-
== Release 0.8.0 Changes
|
48
|
-
|
49
|
-
- Added the ability to specify an optional insertion position in the
|
50
|
-
{Tree::TreeNode#add} method. Idea and original code contributed by Dirk.
|
51
|
-
|
52
|
-
- Added a new method {Tree::TreeNode#detached_subtree_copy} to allow cloning
|
53
|
-
the entire tree. This method is also aliased to {Tree::TreeNode#dup}. Idea
|
54
|
-
and original code contributed by Vincenzo Farruggia.
|
55
|
-
|
56
|
-
- Converted all CamelCase method names to the canonical ruby_method_names
|
57
|
-
(underscore separated). The CamelCase methods can still be invoked, but will
|
58
|
-
throw a Deprecated warning.
|
59
|
-
|
60
|
-
== Release 0.7.0 Changes
|
61
|
-
|
62
|
-
- Converted all exceptions thrown on invalid method arguments to from
|
63
|
-
'RuntimeError' to 'ArgumentError'. This impacts the following methods:
|
64
|
-
|
65
|
-
- {Tree::TreeNode#initialize}
|
66
|
-
- {Tree::TreeNode#add}
|
67
|
-
- {Tree::TreeNode#[]}
|
68
|
-
- {Tree::BinaryTreeNode#add}
|
69
|
-
|
70
|
-
- Added {Tree::Utils::TreeMetricsHandler#level Tree::TreeNode#level} as an alias
|
71
|
-
for {Tree::Utils::TreeMetricsHandler#node_depth Tree::TreeNode#node_depth}
|
72
|
-
|
73
|
-
- Added new methods {Tree::Utils::TreeMetricsHandler#in_degree
|
74
|
-
Tree::TreeNode#in_degree} and {Tree::Utils::TreeMetricsHandler#out_degree
|
75
|
-
Tree::TreeNode#out_degree} to report the node's degree stats
|
76
|
-
|
77
|
-
- {Tree::TreeNode#is_only_child?} now returns +true+ for a root node.
|
78
|
-
|
79
|
-
- {Tree::TreeNode#next_sibling} and {Tree::TreeNode#previous_sibling} now
|
80
|
-
return +nil+ for a root node.
|
81
|
-
|
82
|
-
- {Tree::TreeNode#add} and {Tree::TreeNode#<<} now throw an ArgumentError
|
83
|
-
exception if a +nil+ node is passed as an argument.
|
84
|
-
|
85
|
-
- Added new methods {Tree::Utils::JSONConverter#to_json Tree::TreeNode#to_json}
|
86
|
-
and {Tree::Utils::JSONConverter::ClassMethods#json_create
|
87
|
-
Tree::TreeNode#json_create} to convert to/from the JSON format. Thanks to
|
88
|
-
Dirk[http://github.com/railsbros-dirk] for this change.
|
89
|
-
|
90
|
-
== Release 0.6.1 Changes
|
91
|
-
|
92
|
-
- Deprecated the {Tree::Utils::TreeMetricsHandler#depth} method as it was
|
93
|
-
returning an incorrect depth value. Have introduced a new replacement method
|
94
|
-
{Tree::Utils::TreeMetricsHandler#node_depth} which returns the correct result.
|
95
|
-
|
96
|
-
# Local Variables:
|
97
|
-
# mode: rdoc
|
98
|
-
# coding: utf-8-unix
|
99
|
-
# End:
|