rubytree 0.9.7 → 1.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.
@@ -38,7 +38,7 @@
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
44
 
@@ -114,7 +114,7 @@ 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
@@ -150,12 +150,12 @@ module Tree
150
150
  # @raise [ArgumentError] This exception is raised if a non-hash is passed.
151
151
  # @return [Array] Array of child nodes added
152
152
  def add_from_hash(hashed_subtree)
153
- raise ArgumentError, "Too many children"\
153
+ raise ArgumentError, 'Too many children'\
154
154
  if hashed_subtree.size + @children.size > 2
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,9 +164,12 @@ 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
172
+ # noinspection RubyUnusedLocalVariable
170
173
  def inordered_each(&block)
171
174
 
172
175
  return self.to_enum unless block_given?
@@ -179,13 +182,13 @@ module Tree
179
182
  node_stack.push(current_node)
180
183
  current_node = current_node.left_child
181
184
  else
182
- current_node = node_stack.pop()
185
+ current_node = node_stack.pop
183
186
  yield current_node
184
187
  current_node = current_node.right_child
185
188
  end
186
189
  end
187
190
 
188
- return self if block_given?
191
+ self if block_given?
189
192
 
190
193
  end
191
194
 
@@ -201,7 +204,7 @@ module Tree
201
204
  #
202
205
  # @raise [ArgumentError] If the index is out of limits.
203
206
  def set_child_at(child, at_index)
204
- raise ArgumentError "A binary tree cannot have more than two children."\
207
+ raise ArgumentError 'A binary tree cannot have more than two children.'\
205
208
  unless (0..1).include? at_index
206
209
 
207
210
  @children[at_index] = child
@@ -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'
@@ -4,9 +4,9 @@
4
4
  #
5
5
  # Author:: Anupam Sengupta (anupamsg@gmail.com)
6
6
  #
7
- # Time-stamp: <2015-05-30 14:14:09 anupam>
7
+ # Time-stamp: <2017-12-21 13:42:15 anupam>
8
8
  #
9
- # Copyright (C) 2012, 2013, 2015 Anupam Sengupta <anupamsg@gmail.com>
9
+ # Copyright (C) 2012, 2013, 2015, 2017 Anupam Sengupta <anupamsg@gmail.com>
10
10
  #
11
11
  # All rights reserved.
12
12
  #
@@ -36,6 +36,7 @@
36
36
  # OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
37
37
  #
38
38
 
39
+ require_relative '../../../lib/tree'
39
40
  require 'structured_warnings'
40
41
 
41
42
  module Tree::Utils
@@ -47,17 +48,17 @@ module Tree::Utils
47
48
  # Allow the deprecated CamelCase method names. Display a warning.
48
49
  # :nodoc:
49
50
  def method_missing(meth, *args, &blk)
50
- if self.respond_to?(new_method_name = to_snake_case(meth))
51
- warn DeprecatedMethodWarning,
52
- "The camelCased methods are deprecated. "\
51
+ if self.respond_to?((new_method_name = to_snake_case(meth)))
52
+ warn StructuredWarnings::DeprecatedMethodWarning,
53
+ 'The camelCased methods are deprecated. ' +
53
54
  "Please use #{new_method_name} instead of #{meth}"
54
- return send(new_method_name, *args, &blk)
55
+ send(new_method_name, *args, &blk)
55
56
  else
56
57
  super
57
58
  end
58
59
  end
59
60
 
60
- private
61
+ protected
61
62
 
62
63
  # @!visibility private
63
64
  # Convert a CamelCasedWord to a underscore separated camel_cased_word.
@@ -65,11 +66,11 @@ module Tree::Utils
65
66
  # @param [String] camel_cased_word The word to be converted to snake_case.
66
67
  # @return [String] the snake_cased_word.
67
68
  def to_snake_case(camel_cased_word)
68
- word = camel_cased_word.to_s.dup
69
+ word = camel_cased_word.to_s
69
70
  word.gsub!(/::/, '/')
70
71
  word.gsub!(/([A-Z]+)([A-Z][a-z])/,'\1_\2')
71
72
  word.gsub!(/([a-z\d])([A-Z])/,'\1_\2')
72
- word.tr!("-", "_")
73
+ word.tr!('-', '_')
73
74
  word.downcase!
74
75
  word
75
76
  end
@@ -37,6 +37,8 @@
37
37
  # OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
38
38
  # OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
39
39
 
40
+ require_relative '../../../lib/tree/utils/utils'
41
+
40
42
  module Tree::Utils::HashConverter
41
43
 
42
44
  def self.included(base)
@@ -92,16 +94,16 @@ module Tree::Utils::HashConverter
92
94
  # values that are not hashes or nils.
93
95
 
94
96
  def from_hash(hash)
95
- raise ArgumentError, "Argument must be a type of hash"\
97
+ raise ArgumentError, 'Argument must be a type of hash'\
96
98
  unless hash.is_a?(Hash)
97
99
 
98
- raise ArgumentError, "Hash must have one top-level element"\
100
+ raise ArgumentError, 'Hash must have one top-level element'\
99
101
  if hash.size != 1
100
102
 
101
103
  root, children = hash.first
102
104
 
103
105
  unless [Hash, NilClass].include?(children.class)
104
- raise ArgumentError, "Invalid child. Must be nil or hash."
106
+ raise ArgumentError, 'Invalid child. Must be nil or hash.'
105
107
  end
106
108
 
107
109
  node = self.new(*root)
@@ -138,7 +140,7 @@ module Tree::Utils::HashConverter
138
140
  # @return [Array] Array of child nodes added
139
141
  # @see ClassMethods#from_hash
140
142
  def add_from_hash(children)
141
- raise ArgumentError, "Argument must be a type of hash"\
143
+ raise ArgumentError, 'Argument must be a type of hash'\
142
144
  unless children.is_a?(Hash)
143
145
 
144
146
  child_nodes = []
@@ -35,6 +35,7 @@
35
35
  # OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
36
36
  # OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
37
37
 
38
+ require_relative '../utils/utils'
38
39
  require 'json'
39
40
 
40
41
  # Provides utility methods to convert a {Tree::TreeNode} to and from
@@ -57,21 +58,24 @@ module Tree::Utils::JSONConverter
57
58
  # Rails uses JSON in ActiveSupport, and all Rails JSON encoding goes through
58
59
  # +as_json+.
59
60
  #
61
+ # @param [Object] options
62
+ #
60
63
  # @see #to_json
61
64
  # @see http://stackoverflow.com/a/6880638/273808
65
+ # noinspection RubyUnusedLocalVariable
62
66
  def as_json(options = {})
63
67
 
64
68
  json_hash = {
65
- "name" => name,
66
- "content" => content,
67
- JSON.create_id => self.class.name
69
+ name: name,
70
+ content: content,
71
+ JSON.create_id => self.class.name
68
72
  }
69
73
 
70
74
  if has_children?
71
- json_hash["children"] = children
75
+ json_hash['children'] = children
72
76
  end
73
77
 
74
- return json_hash
78
+ json_hash
75
79
 
76
80
  end
77
81
 
@@ -114,13 +118,13 @@ module Tree::Utils::JSONConverter
114
118
  # @see http://flori.github.com/json
115
119
  def json_create(json_hash)
116
120
 
117
- node = new(json_hash["name"], json_hash["content"])
121
+ node = new(json_hash['name'], json_hash['content'])
118
122
 
119
- json_hash["children"].each do |child|
123
+ json_hash['children'].each do |child|
120
124
  node << child
121
- end if json_hash["children"]
125
+ end if json_hash['children']
122
126
 
123
- return node
127
+ node
124
128
 
125
129
  end
126
130
  end
@@ -4,9 +4,9 @@
4
4
  #
5
5
  # Author:: Anupam Sengupta (anupamsg@gmail.com)
6
6
  #
7
- # Time-stamp: <2015-05-30 14:23:23 anupam>
7
+ # Time-stamp: <2017-12-21 12:49:25 anupam>
8
8
  #
9
- # Copyright (C) 2013, 2015 Anupam Sengupta <anupamsg@gmail.com>
9
+ # Copyright (C) 2013, 2015, 2017 Anupam Sengupta <anupamsg@gmail.com>
10
10
  #
11
11
  # All rights reserved.
12
12
  #
@@ -36,11 +36,13 @@
36
36
  # OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
37
37
  #
38
38
 
39
+ require_relative '../../../lib/tree'
39
40
  require 'structured_warnings'
40
41
 
41
42
  module Tree::Utils
42
43
  # Provides utility functions to measure various tree metrics.
43
44
  module TreeMetricsHandler
45
+ # noinspection RubyUnusedLocalVariable
44
46
  def self.included(base)
45
47
 
46
48
  # @!group Metrics and Measures
@@ -66,7 +68,7 @@ module Tree::Utils
66
68
  # @return [Integer] The total number of nodes in this (sub)tree.
67
69
  # @see #size
68
70
  def length
69
- size()
71
+ self.size
70
72
  end
71
73
 
72
74
  # @!attribute [r] node_height
@@ -127,9 +129,9 @@ module Tree::Utils
127
129
  #
128
130
  # @see #node_depth
129
131
  def depth
130
- warn DeprecatedMethodWarning,
131
- "This method is deprecated. "\
132
- "Please use node_depth() or node_height() instead (bug # 22535)"
132
+ warn StructuredWarnings::DeprecatedMethodWarning,
133
+ 'This method is deprecated. '\
134
+ 'Please use node_depth() or node_height() instead (bug # 22535)'
133
135
 
134
136
  return 1 if is_leaf?
135
137
  1 + @children.collect { |child| child.depth }.max
@@ -36,9 +36,12 @@
36
36
  # OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
37
37
  #
38
38
 
39
+ require_relative '../../../lib/tree'
40
+
39
41
  module Tree::Utils
40
42
  # Provides utility methods for path extraction
41
43
  module TreePathHandler
44
+ # noinspection RubyUnusedLocalVariable
42
45
  def self.included(base)
43
46
 
44
47
  # @!group Node Path
@@ -53,7 +56,7 @@ module Tree::Utils
53
56
  # @return [String] The node path with names separated using the specified
54
57
  # separator.
55
58
  def path_as_string(separator = '=>')
56
- path_as_array().join(separator)
59
+ path_as_array.join(separator)
57
60
  end
58
61
 
59
62
  # Returns the node-names from this node to the root as an array. The first
@@ -61,8 +64,8 @@ module Tree::Utils
61
64
  #
62
65
  # @return [Array] The array containing the node names for the path to this
63
66
  # node
64
- def path_as_array()
65
- get_path_name_array().reverse
67
+ def path_as_array
68
+ get_path_name_array.reverse
66
69
  end
67
70
 
68
71
  # @!visibility private
@@ -76,10 +79,9 @@ module Tree::Utils
76
79
  path_array = current_array_path + [name]
77
80
 
78
81
  if !parent # If detached node or root node.
79
- return path_array
82
+ path_array
80
83
  else # Else recurse to parent node.
81
84
  path_array = parent.get_path_name_array(path_array)
82
- return path_array
83
85
  end
84
86
  end
85
87
 
@@ -35,6 +35,8 @@
35
35
  # OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
36
36
  #
37
37
 
38
+ require_relative '../../../lib/tree/utils/utils'
39
+
38
40
  # Provides utility methods to merge two {Tree::TreeNode} based trees.
39
41
  # @since 0.9.0
40
42
  module Tree::Utils::TreeMergeHandler
@@ -60,8 +62,7 @@ module Tree::Utils::TreeMergeHandler
60
62
  # have the same root node as self.
61
63
  def merge(other_tree)
62
64
  check_merge_prerequisites(other_tree)
63
- new_tree = merge_trees(self.root.dup, other_tree.root)
64
- return new_tree
65
+ merge_trees(self.root.dup, other_tree.root)
65
66
  end
66
67
 
67
68
  # Merge in another tree (that shares the same root node) into +this+ tree.
@@ -102,7 +103,7 @@ module Tree::Utils::TreeMergeHandler
102
103
  end
103
104
  end
104
105
 
105
- # Utility function to recursivley merge two subtrees.
106
+ # Utility function to recursively merge two subtrees.
106
107
  #
107
108
  # @author Darren Oakley (https://github.com/dazoakley)
108
109
  #
@@ -123,7 +124,7 @@ module Tree::Utils::TreeMergeHandler
123
124
  merge_trees( child, tree2[child.name] ) unless tree2[child.name].nil?
124
125
  end
125
126
 
126
- return tree1
127
+ tree1
127
128
  end
128
129
 
129
130
  end
@@ -36,6 +36,9 @@
36
36
  # OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
37
37
 
38
38
  # Provides utilities and mixin modules for RubyTree.
39
+
40
+ require_relative '../../../lib/tree'
41
+
39
42
  module Tree::Utils
40
43
  # Empty module. Being used as a namespace.
41
44
  end
@@ -4,7 +4,7 @@
4
4
  #
5
5
  # Author:: Anupam Sengupta (anupamsg@gmail.com)
6
6
  #
7
- # Copyright (c) 2012, 2013, 2014, 2015 Anupam Sengupta
7
+ # Copyright (c) 2012, 2013, 2014, 2015, 2017 Anupam Sengupta
8
8
  #
9
9
  # All rights reserved.
10
10
  #
@@ -37,5 +37,5 @@
37
37
  #
38
38
  module Tree
39
39
  # Rubytree Package Version
40
- VERSION = '0.9.7'
40
+ VERSION = '1.0.0'
41
41
  end
@@ -7,4 +7,4 @@
7
7
  # Copyright (C) 2015 Anupam Sengupta <anupamsg@gmail.com>
8
8
  #
9
9
 
10
- require "tree"
10
+ require 'tree'
@@ -7,12 +7,12 @@
7
7
  # Copyright (C) 2015 Anupam Sengupta <anupamsg@gmail.com>
8
8
  #
9
9
 
10
- require "rspec"
11
- require "spec_helper"
10
+ require 'rspec'
11
+ require 'spec_helper'
12
12
 
13
13
  describe Tree do
14
14
 
15
- shared_examples_for "any detached node" do
15
+ shared_examples_for 'any detached node' do
16
16
  it 'should not equal "Object.new"' do
17
17
  expect(@tree).not_to eq(Object.new)
18
18
  end
@@ -22,53 +22,53 @@ describe Tree do
22
22
  it 'identifies itself as a root node' do
23
23
  expect(@tree.is_root?).to eq(true)
24
24
  end
25
- it "does not have a parent node" do
25
+ it 'does not have a parent node' do
26
26
  expect(@tree.parent).to eq(nil)
27
27
  end
28
28
 
29
29
  end
30
- context "#initialize", "with empty name and nil content" do
30
+ context '#initialize', 'with empty name and nil content' do
31
31
  before(:each) do
32
- @tree = Tree::TreeNode.new("")
32
+ @tree = Tree::TreeNode.new('')
33
33
  end
34
34
  it 'creates the tree node with name as ""' do
35
- expect(@tree.name).to eq("")
35
+ expect(@tree.name).to eq('')
36
36
  end
37
37
  it "has 'nil' content" do
38
38
  expect(@tree.content).to eq(nil)
39
39
  end
40
40
 
41
- it_behaves_like "any detached node"
41
+ it_behaves_like 'any detached node'
42
42
  end
43
43
 
44
- context "#initialize", "with name 'A' and nil content" do
44
+ context '#initialize', "with name 'A' and nil content" do
45
45
  before(:each) do
46
- @tree = Tree::TreeNode.new("A")
46
+ @tree = Tree::TreeNode.new('A')
47
47
  end
48
48
 
49
49
  it 'creates the tree node with name as "A"' do
50
- expect(@tree.name).to eq("A")
50
+ expect(@tree.name).to eq('A')
51
51
  end
52
52
  it "has 'nil' content" do
53
53
  expect(@tree.content).to eq(nil)
54
54
  end
55
55
 
56
- it_behaves_like "any detached node"
56
+ it_behaves_like 'any detached node'
57
57
  end
58
58
 
59
- context "#initialize", "with node name 'A' and some content" do
59
+ context '#initialize', "with node name 'A' and some content" do
60
60
  before(:each) do
61
- @sample = "sample"
62
- @tree = Tree::TreeNode.new("A", @sample)
61
+ @sample = 'sample'
62
+ @tree = Tree::TreeNode.new('A', @sample)
63
63
  end
64
64
 
65
65
  it 'creates the tree node with name as "A"' do
66
- expect(@tree.name).to eq("A")
66
+ expect(@tree.name).to eq('A')
67
67
  end
68
68
  it "has some content #{@sample}" do
69
69
  expect(@tree.content).to eq(@sample)
70
70
  end
71
71
 
72
- it_behaves_like "any detached node"
72
+ it_behaves_like 'any detached node'
73
73
  end
74
74
  end