rubytree 0.9.5 → 1.0.2

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
- SHA1:
3
- metadata.gz: bf7999767fcf682dd01d0d9ff973f0a558886ffa
4
- data.tar.gz: 81c934501850b65db378eee4e8ca7eb000776aa4
2
+ SHA256:
3
+ metadata.gz: e9977428c2a28cf7d3a31ccc91047f646ec88c4f0da90663e9596dfb006ce0c6
4
+ data.tar.gz: 0e3a42cf9214d95e5f9deed0511c6728c5204a03a319b30a80d96daf3f20f505
5
5
  SHA512:
6
- metadata.gz: 346e6286cbb6271c0eb8bdf54bbce6b2395922f3d9e4c1ff077b2582da4eb98c02b1328ceaeea5a96c45e859ce70ac3f0732779b5afab08666dcce922817622a
7
- data.tar.gz: a0ff0475ab95f2e69a4b2d177f3708beafcb8255f4753cba25f6874760eb19c7f305eb6b3311fbe7476473dc231e4831f6fcfbbd39ba132769a9a5fe606fe28a
6
+ metadata.gz: f311eec1cf9a9710cb5905e5c7c691344bd60beb57b472462d40a81e12af475bb6bf328a6502aa8bbb9af17d5d350b163b5d8d36888835866c473b9ea6e13953
7
+ data.tar.gz: fdc9890aaf6e298d4400ee6f84398ced73dfdaf93c6fe87a4981dd35c5f17934e2a01e803d44351724c615f11e075fbf3181403cbb4343005452ee47fdfbe25e
data/Gemfile CHANGED
@@ -3,12 +3,6 @@ source 'https://rubygems.org'
3
3
  # Specify your gem's dependencies in rubytree.gemspec
4
4
  gemspec
5
5
 
6
- group :development, :test do
7
- gem "rake", "~> 10.4"
8
- gem "test-unit", "~> 3.0"
9
- gem "coveralls", ">= 0.7", :require => false, :platforms => :mri_21
10
- end
11
-
12
6
  # Local Variables:
13
7
  # mode: ruby
14
8
  # End:
data/Gemfile.lock CHANGED
@@ -1,66 +1,97 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- rubytree (0.9.5)
5
- json (~> 1.8)
6
- structured_warnings (~> 0.2)
4
+ rubytree (1.0.2)
5
+ json (~> 2.6.1)
6
+ structured_warnings (~> 0.4.0)
7
7
 
8
8
  GEM
9
9
  remote: https://rubygems.org/
10
10
  specs:
11
- coveralls (0.8.1)
12
- json (~> 1.8)
13
- rest-client (>= 1.6.8, < 2)
14
- simplecov (~> 0.10.0)
11
+ ast (2.4.2)
12
+ coveralls (0.8.23)
13
+ json (>= 1.8, < 3)
14
+ simplecov (~> 0.16.1)
15
15
  term-ansicolor (~> 1.3)
16
- thor (~> 0.19.1)
17
- docile (1.1.5)
18
- domain_name (0.5.24)
19
- unf (>= 0.0.5, < 1.0.0)
20
- http-cookie (1.0.2)
21
- domain_name (~> 0.5)
22
- json (1.8.2)
23
- mime-types (2.6.1)
24
- netrc (0.10.3)
25
- power_assert (0.2.3)
26
- rake (10.4.2)
27
- rdoc (4.2.0)
28
- rest-client (1.8.0)
29
- http-cookie (>= 1.0.2, < 2.0)
30
- mime-types (>= 1.16, < 3.0)
31
- netrc (~> 0.7)
16
+ thor (>= 0.19.4, < 2.0)
17
+ tins (~> 1.6)
18
+ diff-lcs (1.5.0)
19
+ docile (1.4.0)
20
+ json (2.6.1)
21
+ parallel (1.21.0)
22
+ parser (3.0.3.2)
23
+ ast (~> 2.4.1)
24
+ power_assert (2.0.1)
25
+ psych (4.0.3)
26
+ stringio
27
+ rainbow (3.0.0)
28
+ rake (13.0.6)
29
+ rdoc (6.4.0)
30
+ psych (>= 4.0.0)
31
+ regexp_parser (2.2.0)
32
+ rexml (3.2.5)
33
+ rspec (3.10.0)
34
+ rspec-core (~> 3.10.0)
35
+ rspec-expectations (~> 3.10.0)
36
+ rspec-mocks (~> 3.10.0)
37
+ rspec-core (3.10.1)
38
+ rspec-support (~> 3.10.0)
39
+ rspec-expectations (3.10.1)
40
+ diff-lcs (>= 1.2.0, < 2.0)
41
+ rspec-support (~> 3.10.0)
42
+ rspec-mocks (3.10.2)
43
+ diff-lcs (>= 1.2.0, < 2.0)
44
+ rspec-support (~> 3.10.0)
45
+ rspec-support (3.10.3)
32
46
  rtags (0.97)
33
47
  rtagstask (0.0.4)
34
48
  rtags (> 0.0.0)
35
- simplecov (0.10.0)
36
- docile (~> 1.1.0)
37
- json (~> 1.8)
49
+ rubocop (1.24.0)
50
+ parallel (~> 1.10)
51
+ parser (>= 3.0.0.0)
52
+ rainbow (>= 2.2.2, < 4.0)
53
+ regexp_parser (>= 1.8, < 3.0)
54
+ rexml
55
+ rubocop-ast (>= 1.15.0, < 2.0)
56
+ ruby-progressbar (~> 1.7)
57
+ unicode-display_width (>= 1.4.0, < 3.0)
58
+ rubocop-ast (1.15.1)
59
+ parser (>= 3.0.1.1)
60
+ ruby-progressbar (1.11.0)
61
+ simplecov (0.16.1)
62
+ docile (~> 1.1)
63
+ json (>= 1.8, < 3)
38
64
  simplecov-html (~> 0.10.0)
39
- simplecov-html (0.10.0)
40
- structured_warnings (0.2.0)
41
- term-ansicolor (1.3.0)
65
+ simplecov-html (0.10.2)
66
+ stringio (3.0.1)
67
+ structured_warnings (0.4.0)
68
+ sync (0.5.0)
69
+ term-ansicolor (1.7.1)
42
70
  tins (~> 1.0)
43
- test-unit (3.1.1)
71
+ test-unit (3.5.3)
44
72
  power_assert
45
- thor (0.19.1)
46
- tins (1.5.2)
47
- unf (0.1.4)
48
- unf_ext
49
- unf_ext (0.0.7.1)
50
- yard (0.8.7.6)
73
+ thor (1.1.0)
74
+ tins (1.30.0)
75
+ sync
76
+ unicode-display_width (2.1.0)
77
+ webrick (1.7.0)
78
+ yard (0.9.27)
79
+ webrick (~> 1.7.0)
51
80
 
52
81
  PLATFORMS
53
82
  ruby
54
83
 
55
84
  DEPENDENCIES
56
- bundler (~> 1.7)
57
- coveralls (>= 0.7)
58
- rake (~> 10.4)
59
- rdoc (~> 4.2)
60
- rtagstask (~> 0.0)
85
+ bundler (~> 2.3.4)
86
+ coveralls (>= 0.8.23)
87
+ rake (>= 13.0.6)
88
+ rdoc (>= 6.4.0)
89
+ rspec (~> 3.10.0)
90
+ rtagstask (~> 0.0.4)
91
+ rubocop (>= 1.24.0)
61
92
  rubytree!
62
- test-unit (~> 3.0)
63
- yard (~> 0.8)
93
+ test-unit (>= 3.5.3)
94
+ yard (~> 0.9.27)
64
95
 
65
96
  BUNDLED WITH
66
- 1.10.2
97
+ 2.3.4
data/History.rdoc CHANGED
@@ -1,7 +1,23 @@
1
- # @markup rdoc
2
-
3
1
  = History of Changes
4
2
 
3
+ === 0.9.7 / 2015-12-31
4
+
5
+ * Released 0.9.6. This is a minor bug-fix release.
6
+
7
+ * This release allows the {Tree::TreeNode#print_tree} method to be used on
8
+ non-root nodes. Thanks to {https://github.com/ojab Ojab}.
9
+
10
+ * The spaceship operator ('<=>') now returns 'nil' if the object being compared
11
+ to is itself 'nil' or not another {Tree::TreeNode}.
12
+
13
+ === 0.9.6 / 2015-05-30
14
+
15
+ * Released 0.9.6, which is same as 0.9.5, except for an update to the Gem release date.
16
+
17
+ === 0.9.5 / 2015-05-30
18
+
19
+ * Released 0.9.5.
20
+
5
21
  === 0.9.5pre7 / 2015-05-30
6
22
 
7
23
  * Added new methods for getting the path of a node as a string. These have been
data/LICENSE.md CHANGED
@@ -1,7 +1,6 @@
1
1
  [RubyTree][] is licensed under the [BSD][] license.
2
2
 
3
- Copyright (c) 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015
4
- Anupam Sengupta (<anupamsg@gmail.com>).
3
+ Copyright (c) 2006-2021 Anupam Sengupta (<anupamsg@gmail.com>).
5
4
 
6
5
  All rights reserved.
7
6
 
data/README.md CHANGED
@@ -1,17 +1,15 @@
1
1
  <!--
2
2
  README.md
3
3
 
4
- Copyright (C) 2006-2015 Anupam Sengupta (anupamsg@gmail.com)
4
+ Copyright (C) 2006-2017, 2020 Anupam Sengupta (anupamsg@gmail.com)
5
5
 
6
6
  -->
7
7
  # **RubyTree** #
8
8
 
9
9
  [![Gem Version](https://badge.fury.io/rb/rubytree.png)](http://badge.fury.io/rb/rubytree)
10
10
  [![Travis Build Status](https://secure.travis-ci.org/evolve75/RubyTree.png)](http://travis-ci.org/evolve75/rubytree)
11
- [![Dependency Status](https://gemnasium.com/evolve75/RubyTree.png)](https://gemnasium.com/evolve75/RubyTree)
12
11
  [![Code Climate](https://codeclimate.com/github/evolve75/RubyTree.png)](https://codeclimate.com/github/evolve75/RubyTree)
13
12
  [![Coverage Status](https://coveralls.io/repos/evolve75/RubyTree/badge.png)](https://coveralls.io/r/evolve75/RubyTree)
14
- [![githalytics.com alpha](https://cruel-carlota.pagodabox.com/473b881f1075bf9f255f0181dde6068f)](http://githalytics.com/evolve75/RubyTree)
15
13
 
16
14
  ## DESCRIPTION: ##
17
15
 
@@ -104,6 +102,9 @@ siblings_of_child1 = child1.siblings
104
102
  # ..... Retrieve immediate children of the root node as an array.
105
103
  children_of_root = root_node.children
106
104
 
105
+ # ..... Retrieve the parent of a node.
106
+ parent = child1.parent
107
+
107
108
  # ..... This is a depth-first and L-to-R pre-ordered traversal.
108
109
  root_node.each { |node| node.content.reverse }
109
110
 
@@ -118,7 +119,7 @@ This example can also be found at
118
119
 
119
120
  ## REQUIREMENTS: ##
120
121
 
121
- * [Ruby][] 1.8.x, 1.9.x, 2.0.x, or 2.1.x.
122
+ * [Ruby][] 2.2.x, 2.3.x or 2.4.x
122
123
 
123
124
 
124
125
  * Run-time Dependencies:
@@ -130,6 +131,7 @@ This example can also be found at
130
131
  * [Bundler][] for creating the stable build environment
131
132
  * [Rake][] for building the package
132
133
  * [Yard][] for the documentation
134
+ * [RSpec][] for additional Ruby Spec test files
133
135
 
134
136
  ## INSTALL: ##
135
137
 
@@ -241,8 +243,8 @@ A big thanks to the following contributors for helping improve **RubyTree**:
241
243
  [BSD]: http://opensource.org/licenses/bsd-license.php "BSD License"
242
244
  [Binary tree]: http://en.wikipedia.org/wiki/Binary_tree "Binary Tree Data Structure"
243
245
  [Bundler]: http://bundler.io "Bundler"
244
- [Comparable]: http://ruby-doc.org/core-1.8.7/Comparable.html "Comparable mix-in"
245
- [Enumerable]: http://ruby-doc.org/core-1.9.3/Enumerable.html "Enumerable mix-in"
246
+ [Comparable]: http://ruby-doc.org/core-2.4.2/Comparable.html "Comparable mix-in"
247
+ [Enumerable]: http://ruby-doc.org/core-2.4.2/Enumerable.html "Enumerable mix-in"
246
248
  [JSON]: http://flori.github.com/json "JSON"
247
249
  [Rake]: https://rubygems.org/gems/rake "Rake"
248
250
  [Ruby]: http://www.ruby-lang.org "Ruby Programming Language"
@@ -251,7 +253,7 @@ A big thanks to the following contributors for helping improve **RubyTree**:
251
253
  [breadth-first]: http://en.wikipedia.org/wiki/Breadth-first_search "Breadth-first (level-first) Traversal"
252
254
  [git]: http://git-scm.com "Git SCM"
253
255
  [in-order]: http://en.wikipedia.org/wiki/Tree_traversal#In-order "In-order (symmetric) Traversal"
254
- [marshaling]: http://ruby-doc.org/core-1.8.7/Marshal.html "Marshaling in Ruby"
256
+ [marshaling]: http://ruby-doc.org/core-2.4.2/Marshal.html "Marshaling in Ruby"
255
257
  [post-order]: http://en.wikipedia.org/wiki/Tree_traversal#Post-order "Post-ordered Traversal"
256
258
  [pre-order]: http://en.wikipedia.org/wiki/Tree_traversal#Pre-order "Pre-ordered Traversal"
257
259
  [rt@github]: http://github.com/evolve75/RubyTree "RubyTree Project Page on Github"
@@ -261,6 +263,6 @@ A big thanks to the following contributors for helping improve **RubyTree**:
261
263
  [rt_site]: http://rubytree.anupamsg.me "RubyTree Site"
262
264
  [structured_warnings]: http://github.com/schmidt/structured_warnings "structured_warnings"
263
265
  [tree_data_structure]: http://en.wikipedia.org/wiki/Tree_data_structure "Tree Data Structure"
264
-
266
+ [RSpec]: https://relishapp.com/rspec/
265
267
 
266
268
  [![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/evolve75/rubytree/trend.png)](https://bitdeli.com/free "Bitdeli Badge")
data/Rakefile CHANGED
@@ -2,7 +2,7 @@
2
2
  #
3
3
  # Rakefile - This file is part of the RubyTree package.
4
4
  #
5
- # Copyright (c) 2006-2015 Anupam Sengupta
5
+ # Copyright (c) 2006-2021 Anupam Sengupta
6
6
  #
7
7
  # All rights reserved.
8
8
  #
@@ -33,46 +33,47 @@
33
33
  #
34
34
 
35
35
  require 'rubygems'
36
- GEM_SPEC = eval(File.read("rubytree.gemspec")) # Load the gemspec.
36
+ GEM_SPEC = eval(File.read('./rubytree.gemspec')) # Load the gemspec.
37
37
 
38
38
  PKG_NAME = GEM_SPEC.name
39
39
  PKG_VER = GEM_SPEC.version
40
40
  GEM_NAME = "#{PKG_NAME}-#{PKG_VER}.gem"
41
41
 
42
- desc "Default Task (Run the tests)"
42
+ desc 'Default Task (Run the tests)'
43
43
  task :default do
44
- if ENV["COVERAGE"]
45
- Rake::Task["test:coverage"].invoke
44
+ if ENV['COVERAGE']
45
+ Rake::Task['test:coverage'].invoke
46
46
  else
47
- Rake::Task["test:unit"].invoke
47
+ Rake::Task['test:unit'].invoke
48
+ Rake::Task['spec'].invoke
48
49
  end
49
50
  end
50
51
 
51
- desc "Display the current gem version"
52
+ desc 'Display the current gem version'
52
53
  task :version do
53
54
  puts "Current Version: #{GEM_NAME}"
54
55
  end
55
56
 
56
57
  require 'rake/clean'
57
- task :clean => 'gem:clobber_package'
58
+ task clean: 'gem:clobber_package'
58
59
  CLEAN.include('coverage')
59
- task :clobber => [:clean, 'doc:clobber_rdoc', 'doc:clobber_yard']
60
+ task clobber: [:clean, 'doc:clobber_rdoc', 'doc:clobber_yard']
60
61
 
61
- desc "Open an irb session preloaded with this library"
62
+ desc 'Open an irb session preloaded with this library'
62
63
  task :console do
63
- sh "irb -rubygems -r ./lib/tree.rb"
64
+ sh 'irb -rubygems -r ./lib/tree.rb'
64
65
  end
65
66
 
66
- namespace :doc do # ................................ Documentation
67
+ namespace :doc do # ................................ Documentation
67
68
  begin
68
- gem 'rdoc', ">= 2.4.2" # To get around a stupid bug in Ruby 1.9.2 Rake.
69
+ gem 'rdoc', '>= 6.4.0' # To get around a stupid bug in Ruby 1.9.2 Rake.
69
70
  require 'rdoc/task'
70
71
  Rake::RDocTask.new do |rdoc|
71
72
  rdoc.rdoc_dir = 'rdoc'
72
73
  rdoc.title = "#{PKG_NAME}-#{PKG_VER}"
73
74
  rdoc.main = 'README.rdoc'
74
75
  rdoc.rdoc_files.include(GEM_SPEC.extra_rdoc_files)
75
- rdoc.rdoc_files.include('lib/**/*.rb')
76
+ rdoc.rdoc_files.include('./lib/**/*.rb')
76
77
  end
77
78
  rescue LoadError
78
79
  # Oh well.
@@ -82,23 +83,22 @@ namespace :doc do # ................................ Documentation
82
83
  require 'yard'
83
84
  YARD::Rake::YardocTask.new do |t|
84
85
  t.files = ['lib/**/*.rb', '-', GEM_SPEC.extra_rdoc_files]
85
- t.options = ['--no-private', '--embed-mixins']
86
+ t.options = %w[--no-private --embed-mixins]
86
87
  end
87
88
  rescue LoadError
88
89
  # Oh well.
89
90
  end
90
91
 
91
- desc "Remove YARD Documentation"
92
+ desc 'Remove YARD Documentation'
92
93
  task :clobber_yard do
93
94
  rm_rf 'doc'
94
95
  end
95
96
  end
96
97
 
97
- desc "Run the test cases"
98
- task :test => 'test:unit'
99
-
100
- namespace :test do # ................................ Test related
98
+ desc 'Run the test cases'
99
+ task test: 'test:unit'
101
100
 
101
+ namespace :test do # ................................ Test related
102
102
  require 'rake/testtask'
103
103
  Rake::TestTask.new(:unit) do |test|
104
104
  test.libs << 'lib' << 'test'
@@ -106,7 +106,7 @@ namespace :test do # ................................ Test related
106
106
  test.verbose = false
107
107
  end
108
108
 
109
- desc "Run the examples"
109
+ desc 'Run the examples'
110
110
  Rake::TestTask.new(:examples) do |example|
111
111
  example.libs << 'lib' << 'examples'
112
112
  example.pattern = 'examples/**/example_*.rb'
@@ -114,7 +114,7 @@ namespace :test do # ................................ Test related
114
114
  example.warning = false
115
115
  end
116
116
 
117
- desc "Run the code coverage"
117
+ desc 'Run the code coverage'
118
118
  task :coverage do
119
119
  ruby 'test/run_test.rb'
120
120
  end
@@ -122,7 +122,7 @@ namespace :test do # ................................ Test related
122
122
  begin
123
123
  require 'rcov/rcovtask'
124
124
  Rcov::RcovTask.new(:rcov) do |t|
125
- t.libs << "test"
125
+ t.libs << 'test'
126
126
  t.test_files = FileList['test/**/test_*.rb']
127
127
  t.verbose = true
128
128
  t.rcov_opts << '--exclude /gems/,/Library/,/usr/,spec,lib/tasks'
@@ -130,20 +130,28 @@ namespace :test do # ................................ Test related
130
130
  rescue LoadError
131
131
  # Oh well. Can't have everything.
132
132
  end
133
+ end
134
+
135
+ begin # ................................ rspec tests
136
+ require 'rspec/core/rake_task'
133
137
 
138
+ RSpec::Core::RakeTask.new(:spec) do |t|
139
+ t.fail_on_error = false
140
+ t.rspec_opts = ['--color', '--format doc']
141
+ end
142
+ rescue LoadError
143
+ # Cannot load rspec.
134
144
  end
135
145
 
136
- namespace :tag do # ................................ Emacs Tags
137
- begin
138
- require 'rtagstask'
139
- RTagsTask.new(:tags) do |rd|
140
- rd.vi = false
141
- CLEAN.include('TAGS')
142
- end
143
- rescue LoadError
144
- # Oh well. Can't have everything.
146
+ namespace :tag do # ................................ Emacs Tags
147
+ require 'rtagstask'
148
+ RTagsTask.new(:tags) do |rd|
149
+ rd.vi = false
150
+ CLEAN.include('TAGS')
145
151
  end
146
- end
152
+ rescue LoadError
153
+ # Oh well. Can't have everything.
154
+ end
147
155
 
148
156
  namespace :gem do # ................................ Gem related
149
157
  require 'rubygems/package_task'
@@ -152,8 +160,8 @@ namespace :gem do # ................................ Gem related
152
160
  pkg.need_tar = true
153
161
  end
154
162
 
155
- desc "Push the gem into the Rubygems repository"
156
- task :push => :gem do
163
+ desc 'Push the gem into the Rubygems repository'
164
+ task push: :gem do
157
165
  sh "gem push pkg/#{GEM_NAME}"
158
166
  end
159
167
  end
@@ -3,8 +3,8 @@
3
3
  # example_basic.rb:: Basic usage of the tree library.
4
4
  #
5
5
  # Author: Anupam Sengupta
6
- # Time-stamp: <2013-12-28 12:14:20 anupam>
7
- # Copyright (C) 2013 Anupam Sengupta <anupamsg@gmail.com>
6
+ # Time-stamp: <2015-12-31 22:17:30 anupam>
7
+ # Copyright (C) 2013, 2015 Anupam Sengupta <anupamsg@gmail.com>
8
8
  #
9
9
  # The following example implements this tree structure:
10
10
  #
@@ -23,22 +23,22 @@
23
23
  # +---------------+
24
24
 
25
25
  # ..... Example starts.
26
- require 'tree' # Load the library
26
+ require 'tree' # Load the library
27
27
 
28
28
  # ..... Create the root node first. Note that every node has a name and an optional content payload.
29
- root_node = Tree::TreeNode.new("ROOT", "Root Content")
29
+ root_node = Tree::TreeNode.new('ROOT', 'Root Content')
30
30
  root_node.print_tree
31
31
 
32
32
  # ..... Now insert the child nodes. Note that you can "chain" the child insertions for a given path to any depth.
33
- root_node << Tree::TreeNode.new("CHILD1", "Child1 Content") << Tree::TreeNode.new("GRANDCHILD1", "GrandChild1 Content")
34
- root_node << Tree::TreeNode.new("CHILD2", "Child2 Content")
33
+ root_node << Tree::TreeNode.new('CHILD1', 'Child1 Content') << Tree::TreeNode.new('GRANDCHILD1', 'GrandChild1 Content')
34
+ root_node << Tree::TreeNode.new('CHILD2', 'Child2 Content')
35
35
 
36
36
  # ..... Lets print the representation to stdout. This is primarily used for debugging purposes.
37
37
  root_node.print_tree
38
38
 
39
39
  # ..... Lets directly access children and grandchildren of the root. The can be "chained" for a given path to any depth.
40
- child1 = root_node["CHILD1"]
41
- grand_child1 = root_node["CHILD1"]["GRANDCHILD1"]
40
+ child1 = root_node['CHILD1']
41
+ grand_child1 = root_node['CHILD1']['GRANDCHILD1']
42
42
 
43
43
  # ..... Now lets retrieve siblings of the current node as an array.
44
44
  siblings_of_child1 = child1.siblings
@@ -46,6 +46,9 @@ siblings_of_child1 = child1.siblings
46
46
  # ..... Lets retrieve immediate children of the root node as an array.
47
47
  children_of_root = root_node.children
48
48
 
49
+ # ..... Retrieve the parent of a node.
50
+ parent = child1.parent
51
+
49
52
  # ..... This is a depth-first and L-to-R pre-ordered traversal.
50
53
  root_node.each { |node| node.content.reverse }
51
54
 
data/lib/rubytree.rb CHANGED
@@ -38,4 +38,4 @@
38
38
  # OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
39
39
  #
40
40
 
41
- require "tree.rb"
41
+ require 'tree'
@@ -38,10 +38,9 @@
38
38
  # OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
39
39
  #
40
40
 
41
- require 'tree'
41
+ require_relative '../tree'
42
42
 
43
43
  module Tree
44
-
45
44
  # Provides a Binary tree implementation. This node allows only two child nodes
46
45
  # (left and right child). It also provides direct access to the left or right
47
46
  # child, including assignment to the same.
@@ -51,7 +50,6 @@ module Tree
51
50
  # @author Anupam Sengupta
52
51
  #
53
52
  class BinaryTreeNode < TreeNode
54
-
55
53
  # @!group Core Attributes
56
54
 
57
55
  # @!attribute [rw] left_child
@@ -85,6 +83,7 @@ module Tree
85
83
  # @return [Boolean] +true+ if this is the left child of its parent.
86
84
  def is_left_child?
87
85
  return false if is_root?
86
+
88
87
  self == parent.left_child
89
88
  end
90
89
 
@@ -95,6 +94,7 @@ module Tree
95
94
  # @return [Boolean] +true+ if this is the right child of its parent.
96
95
  def is_right_child?
97
96
  return false if is_root?
97
+
98
98
  self == parent.right_child
99
99
  end
100
100
 
@@ -114,12 +114,11 @@ module Tree
114
114
  # @raise [ArgumentError] This exception is raised if two children are
115
115
  # already present.
116
116
  def add(child)
117
- raise ArgumentError, "Already has two child nodes" if @children.size == 2
117
+ raise ArgumentError, 'Already has two child nodes' if @children.size == 2
118
118
 
119
119
  super(child)
120
120
  end
121
121
 
122
-
123
122
  # Instantiate and insert child nodes from data in a Ruby +Hash+
124
123
  #
125
124
  # This method is used in conjunction with {Tree::TreeNode.from_hash} to
@@ -150,12 +149,13 @@ module Tree
150
149
  # @raise [ArgumentError] This exception is raised if a non-hash is passed.
151
150
  # @return [Array] Array of child nodes added
152
151
  def add_from_hash(hashed_subtree)
153
- raise ArgumentError, "Too many children"\
152
+ raise ArgumentError, 'Too many children'\
154
153
  if hashed_subtree.size + @children.size > 2
154
+
155
155
  super(hashed_subtree)
156
156
  end
157
157
 
158
- # Performs inorder traversal (including this node).
158
+ # Performs in-order traversal (including this node).
159
159
  #
160
160
  # @yieldparam node [Tree::BinaryTreeNode] Each node (in-order).
161
161
  #
@@ -164,29 +164,30 @@ module Tree
164
164
  #
165
165
  # @since 0.9.0
166
166
  #
167
+ # @param [Object] block
168
+ #
167
169
  # @see #each
168
170
  # @see #preordered_each
169
171
  # @see #postordered_each
170
- def inordered_each(&block)
171
-
172
- return self.to_enum unless block_given?
172
+ # noinspection RubyUnusedLocalVariable
173
+ def inordered_each
174
+ return to_enum unless block_given?
173
175
 
174
176
  node_stack = []
175
177
  current_node = self
176
178
 
177
- until node_stack.empty? and current_node == nil
179
+ until node_stack.empty? and current_node.nil?
178
180
  if current_node
179
181
  node_stack.push(current_node)
180
182
  current_node = current_node.left_child
181
183
  else
182
- current_node = node_stack.pop()
184
+ current_node = node_stack.pop
183
185
  yield current_node
184
186
  current_node = current_node.right_child
185
187
  end
186
188
  end
187
189
 
188
- return self if block_given?
189
-
190
+ self if block_given?
190
191
  end
191
192
 
192
193
  # A protected method to allow insertion of child nodes at the specified
@@ -201,7 +202,7 @@ module Tree
201
202
  #
202
203
  # @raise [ArgumentError] If the index is out of limits.
203
204
  def set_child_at(child, at_index)
204
- raise ArgumentError "A binary tree cannot have more than two children."\
205
+ raise ArgumentError 'A binary tree cannot have more than two children.'\
205
206
  unless (0..1).include? at_index
206
207
 
207
208
  @children[at_index] = child
@@ -242,9 +243,7 @@ module Tree
242
243
 
243
244
  # Swaps the left and right child nodes of the receiver node with each other.
244
245
  def swap_children
245
- self.left_child, self.right_child = self.right_child, self.left_child
246
+ self.left_child, self.right_child = right_child, left_child
246
247
  end
247
-
248
248
  end
249
-
250
249
  end
@@ -2,7 +2,7 @@
2
2
  #
3
3
  # = rubytree_deps.rb - Dependencies for RubyTree
4
4
  #
5
- # Centralizes and lists the dependencies forthe RubyTree gem.
5
+ # Centralizes and lists the dependencies for the RubyTree gem.
6
6
  #
7
7
  # Author:: Anupam Sengupta (anupamsg@gmail.com)
8
8
  #
@@ -40,10 +40,10 @@
40
40
  require 'structured_warnings'
41
41
  require 'json'
42
42
 
43
- require 'tree/version'
44
- require 'tree/utils/metrics_methods'
45
- require 'tree/utils/path_methods'
46
- require 'tree/utils/camel_case_method_handler'
47
- require 'tree/utils/json_converter'
48
- require 'tree/utils/tree_merge_handler'
49
- require 'tree/utils/hash_converter'
43
+ require_relative '../tree/version'
44
+ require_relative '../tree/utils/metrics_methods'
45
+ require_relative '../tree/utils/path_methods'
46
+ require_relative '../tree/utils/camel_case_method_handler'
47
+ require_relative '../tree/utils/json_converter'
48
+ require_relative '../tree/utils/tree_merge_handler'
49
+ require_relative '../tree/utils/hash_converter'