rubytree 0.9.5pre6 → 0.9.5pre7

Sign up to get free protection for your applications and to get access to all the features.
@@ -8,19 +8,19 @@
8
8
  # Author:: Anupam Sengupta (anupamsg@gmail.com)
9
9
  #
10
10
 
11
- # Copyright (c) 2007, 2008, 2009, 2010, 2012, 2013, 2014 Anupam Sengupta
11
+ # Copyright (c) 2007, 2008, 2009, 2010, 2012, 2013, 2014, 2015 Anupam Sengupta
12
12
  #
13
13
  # All rights reserved.
14
14
  #
15
- # Redistribution and use in source and binary forms, with or without modification,
16
- # are permitted provided that the following conditions are met:
15
+ # Redistribution and use in source and binary forms, with or without
16
+ # modification, are permitted provided that the following conditions are met:
17
17
  #
18
18
  # - Redistributions of source code must retain the above copyright notice, this
19
19
  # list of conditions and the following disclaimer.
20
20
  #
21
- # - Redistributions in binary form must reproduce the above copyright notice, this
22
- # list of conditions and the following disclaimer in the documentation and/or
23
- # other materials provided with the distribution.
21
+ # - Redistributions in binary form must reproduce the above copyright notice,
22
+ # this list of conditions and the following disclaimer in the documentation
23
+ # and/or other materials provided with the distribution.
24
24
  #
25
25
  # - Neither the name of the organization nor the names of its contributors may
26
26
  # be used to endorse or promote products derived from this software without
@@ -29,21 +29,22 @@
29
29
  # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
30
30
  # AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
31
31
  # IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
32
- # DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
33
- # ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
34
- # (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
35
- # LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
36
- # ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
37
- # (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
38
- # SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
32
+ # DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE
33
+ # FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
34
+ # DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
35
+ # SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
36
+ # CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
37
+ # OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
38
+ # OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
39
39
  #
40
40
 
41
41
  require 'tree'
42
42
 
43
43
  module Tree
44
44
 
45
- # Provides a Binary tree implementation. This node allows only two child nodes (left and right child). It also
46
- # provides direct access to the left or right child, including assignment to the same.
45
+ # Provides a Binary tree implementation. This node allows only two child nodes
46
+ # (left and right child). It also provides direct access to the left or right
47
+ # child, including assignment to the same.
47
48
  #
48
49
  # This inherits from the {Tree::TreeNode} class.
49
50
  #
@@ -64,11 +65,13 @@ module Tree
64
65
  end
65
66
 
66
67
  # @!attribute [rw] right_child
67
- # Right child of the receiver node. Note that right child == last child unless there is only one child.
68
+ # Right child of the receiver node. Note that right child == last child
69
+ # unless there is only one child.
68
70
  #
69
71
  # Returns +nil+ if the right child does not exist.
70
72
  #
71
- # @return [Tree::BinaryTreeNode] The right child, or +nil+ if the right side child does not exist.
73
+ # @return [Tree::BinaryTreeNode] The right child, or +nil+ if the right side
74
+ # child does not exist.
72
75
  #
73
76
  # @see #left_child
74
77
  def right_child
@@ -97,16 +100,19 @@ module Tree
97
100
 
98
101
  # @!group Structure Modification
99
102
 
100
- # Adds the specified child node to the receiver node. The child node's parent is set to be the receiver.
103
+ # Adds the specified child node to the receiver node. The child node's
104
+ # parent is set to be the receiver.
101
105
  #
102
- # The child nodes are added in the order of addition, i.e., the first child added becomes the left node, and the
103
- # second child added will be the second node.
106
+ # The child nodes are added in the order of addition, i.e., the first child
107
+ # added becomes the left node, and the second child added will be the second
108
+ # node.
104
109
  #
105
110
  # If only one child is present, then this will be the left child.
106
111
  #
107
112
  # @param [Tree::BinaryTreeNode] child The child to add.
108
113
  #
109
- # @raise [ArgumentError] This exception is raised if two children are already present.
114
+ # @raise [ArgumentError] This exception is raised if two children are
115
+ # already present.
110
116
  def add(child)
111
117
  raise ArgumentError, "Already has two child nodes" if @children.size == 2
112
118
 
@@ -137,11 +143,15 @@ module Tree
137
143
  # root.add_from_hash({:B => {:D => {}}, [:C, "C content!"] => {}})
138
144
  #
139
145
  # @param [Hash] hashed_subtree The hash of child subtrees.
140
- # @raise [ArgumentError] This exception is raised if hash contains too many children.
146
+ #
147
+ # @raise [ArgumentError] This exception is raised if hash contains too
148
+ # many children.
149
+ # =>
141
150
  # @raise [ArgumentError] This exception is raised if a non-hash is passed.
142
151
  # @return [Array] Array of child nodes added
143
152
  def add_from_hash(hashed_subtree)
144
- raise ArgumentError, "Too many children" if hashed_subtree.size + @children.size > 2
153
+ raise ArgumentError, "Too many children"\
154
+ if hashed_subtree.size + @children.size > 2
145
155
  super(hashed_subtree)
146
156
  end
147
157
 
@@ -179,17 +189,20 @@ module Tree
179
189
 
180
190
  end
181
191
 
182
- # A protected method to allow insertion of child nodes at the specified location.
183
- # Note that this method allows insertion of +nil+ nodes.
192
+ # A protected method to allow insertion of child nodes at the specified
193
+ # location. Note that this method allows insertion of +nil+ nodes.
194
+ #
195
+ # @param [Tree::BinaryTreeNode] child The child to add at the specified
196
+ # location.
184
197
  #
185
- # @param [Tree::BinaryTreeNode] child The child to add at the specified location.
186
198
  # @param [Integer] at_index The location to add the entry at (0 or 1).
187
199
  #
188
200
  # @return [Tree::BinaryTreeNode] The added child.
189
201
  #
190
202
  # @raise [ArgumentError] If the index is out of limits.
191
203
  def set_child_at(child, at_index)
192
- raise ArgumentError "A binary tree cannot have more than two children." unless (0..1).include? at_index
204
+ raise ArgumentError "A binary tree cannot have more than two children."\
205
+ unless (0..1).include? at_index
193
206
 
194
207
  @children[at_index] = child
195
208
  @children_hash[child.name] = child if child # Assign the name mapping
@@ -199,9 +212,11 @@ module Tree
199
212
 
200
213
  protected :set_child_at
201
214
 
202
- # Sets the left child of the receiver node. If a previous child existed, it is replaced.
215
+ # Sets the left child of the receiver node. If a previous child existed, it
216
+ # is replaced.
203
217
  #
204
- # @param [Tree::BinaryTreeNode] child The child to add as the left-side node.
218
+ # @param [Tree::BinaryTreeNode] child The child to add as the left-side
219
+ # node.
205
220
  #
206
221
  # @return [Tree::BinaryTreeNode] The assigned child node.
207
222
  #
@@ -211,9 +226,11 @@ module Tree
211
226
  set_child_at child, 0
212
227
  end
213
228
 
214
- # Sets the right child of the receiver node. If a previous child existed, it is replaced.
229
+ # Sets the right child of the receiver node. If a previous child existed, it
230
+ # is replaced.
215
231
  #
216
- # @param [Tree::BinaryTreeNode] child The child to add as the right-side node.
232
+ # @param [Tree::BinaryTreeNode] child The child to add as the right-side
233
+ # node.
217
234
  #
218
235
  # @return [Tree::BinaryTreeNode] The assigned child node.
219
236
  #
@@ -7,19 +7,19 @@
7
7
  # Author:: Anupam Sengupta (anupamsg@gmail.com)
8
8
  #
9
9
 
10
- # Copyright (c) 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2014 Anupam Sengupta
10
+ # Copyright (c) 2006-2015 Anupam Sengupta
11
11
  #
12
12
  # All rights reserved.
13
13
  #
14
- # Redistribution and use in source and binary forms, with or without modification,
15
- # are permitted provided that the following conditions are met:
14
+ # Redistribution and use in source and binary forms, with or without
15
+ # modification, are permitted provided that the following conditions are met:
16
16
  #
17
17
  # - Redistributions of source code must retain the above copyright notice, this
18
18
  # list of conditions and the following disclaimer.
19
19
  #
20
- # - Redistributions in binary form must reproduce the above copyright notice, this
21
- # list of conditions and the following disclaimer in the documentation and/or
22
- # other materials provided with the distribution.
20
+ # - Redistributions in binary form must reproduce the above copyright notice,
21
+ # this list of conditions and the following disclaimer in the documentation
22
+ # and/or other materials provided with the distribution.
23
23
  #
24
24
  # - Neither the name of the organization nor the names of its contributors may
25
25
  # be used to endorse or promote products derived from this software without
@@ -28,13 +28,13 @@
28
28
  # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
29
29
  # AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
30
30
  # IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
31
- # DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
32
- # ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
33
- # (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
34
- # LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
35
- # ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
36
- # (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
37
- # SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
31
+ # DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE
32
+ # FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
33
+ # DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
34
+ # SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
35
+ # CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
36
+ # OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
37
+ # OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
38
38
  #
39
39
 
40
40
  require 'structured_warnings'
@@ -42,7 +42,8 @@ require 'json'
42
42
 
43
43
  require 'tree/version'
44
44
  require 'tree/utils/metrics_methods'
45
+ require 'tree/utils/path_methods'
45
46
  require 'tree/utils/camel_case_method_handler'
46
47
  require 'tree/utils/json_converter'
47
48
  require 'tree/utils/tree_merge_handler'
48
- require 'tree/utils/hash_converter'
49
+ require 'tree/utils/hash_converter'
@@ -4,21 +4,21 @@
4
4
  #
5
5
  # Author:: Anupam Sengupta (anupamsg@gmail.com)
6
6
  #
7
- # Time-stamp: <2013-12-31 20:48:13 anupam>
7
+ # Time-stamp: <2015-05-30 14:14:09 anupam>
8
8
  #
9
- # Copyright (C) 2012, 2013 Anupam Sengupta <anupamsg@gmail.com>
9
+ # Copyright (C) 2012, 2013, 2015 Anupam Sengupta <anupamsg@gmail.com>
10
10
  #
11
11
  # All rights reserved.
12
12
  #
13
- # Redistribution and use in source and binary forms, with or without modification,
14
- # are permitted provided that the following conditions are met:
13
+ # Redistribution and use in source and binary forms, with or without
14
+ # modification, are permitted provided that the following conditions are met:
15
15
  #
16
16
  # - Redistributions of source code must retain the above copyright notice, this
17
17
  # list of conditions and the following disclaimer.
18
18
  #
19
- # - Redistributions in binary form must reproduce the above copyright notice, this
20
- # list of conditions and the following disclaimer in the documentation and/or
21
- # other materials provided with the distribution.
19
+ # - Redistributions in binary form must reproduce the above copyright notice,
20
+ # this list of conditions and the following disclaimer in the documentation
21
+ # and/or other materials provided with the distribution.
22
22
  #
23
23
  # - Neither the name of the organization nor the names of its contributors may
24
24
  # be used to endorse or promote products derived from this software without
@@ -27,13 +27,13 @@
27
27
  # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
28
28
  # AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
29
29
  # IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
30
- # DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
31
- # ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
32
- # (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
33
- # LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
34
- # ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
35
- # (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
36
- # SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
30
+ # DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE
31
+ # FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
32
+ # DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
33
+ # SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
34
+ # CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
35
+ # OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
36
+ # OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
37
37
  #
38
38
 
39
39
  require 'structured_warnings'
@@ -49,7 +49,8 @@ module Tree::Utils
49
49
  def method_missing(meth, *args, &blk)
50
50
  if self.respond_to?(new_method_name = to_snake_case(meth))
51
51
  warn DeprecatedMethodWarning,
52
- "The camelCased methods are deprecated. Please use #{new_method_name} instead of #{meth}"
52
+ "The camelCased methods are deprecated. "\
53
+ "Please use #{new_method_name} instead of #{meth}"
53
54
  return send(new_method_name, *args, &blk)
54
55
  else
55
56
  super
@@ -5,22 +5,22 @@
5
5
  #
6
6
  # Author:: Jen Hamon (http://www.github.com/jhamon)
7
7
  #
8
- # Time-stamp: <2015-01-02 15:11:03 anupam>
8
+ # Time-stamp: <2015-05-30 14:19:16 anupam>
9
9
  #
10
10
  # Copyright (C) 2014, 2015 Jen Hamon (http://www.github.com/jhamon) and
11
11
  # Anupam Sengupta <anupamsg@gmail.com>
12
12
  #
13
13
  # All rights reserved.
14
14
  #
15
- # Redistribution and use in source and binary forms, with or without modification,
16
- # are permitted provided that the following conditions are met:
15
+ # Redistribution and use in source and binary forms, with or without
16
+ # modification, are permitted provided that the following conditions are met:
17
17
  #
18
18
  # - Redistributions of source code must retain the above copyright notice, this
19
19
  # list of conditions and the following disclaimer.
20
20
  #
21
- # - Redistributions in binary form must reproduce the above copyright notice, this
22
- # list of conditions and the following disclaimer in the documentation and/or
23
- # other materials provided with the distribution.
21
+ # - Redistributions in binary form must reproduce the above copyright notice,
22
+ # this list of conditions and the following disclaimer in the documentation
23
+ # and/or other materials provided with the distribution.
24
24
  #
25
25
  # - Neither the name of the organization nor the names of its contributors may
26
26
  # be used to endorse or promote products derived from this software without
@@ -29,13 +29,13 @@
29
29
  # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
30
30
  # AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
31
31
  # IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
32
- # DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
33
- # ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
34
- # (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
35
- # LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
36
- # ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
37
- # (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
38
- # SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
32
+ # DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE
33
+ # FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
34
+ # DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
35
+ # SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
36
+ # CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
37
+ # OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
38
+ # OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
39
39
 
40
40
  module Tree::Utils::HashConverter
41
41
 
@@ -73,19 +73,30 @@ module Tree::Utils::HashConverter
73
73
  #
74
74
  # # A tree with equivalent structure but with content present for
75
75
  # # nodes A and D could be built from a hash like this:
76
- # {[:A, "A content"] => {:B => {}, :C => {[:D, "D content"] => {}, :E => {}}}}
76
+ # {[:A, "A content"] => {:B => {},
77
+ # :C => { [:D, "D content"] => {},
78
+ # :E => {} }}}
77
79
  #
78
80
  # @author Jen Hamon (http://www.github.com/jhamon)
79
81
  # @param [Hash] hash Hash to build tree from.
80
- # @return [Tree::TreeNode] The {Tree::TreeNode} instance representing the root of your tree.
82
+ #
83
+ # @return [Tree::TreeNode] The {Tree::TreeNode} instance representing the
84
+ # root of your tree.
81
85
  #
82
86
  # @raise [ArgumentError] This exception is raised if a non-Hash is passed.
83
- # @raise [ArgumentError] This exception is raised if the hash has multiple top-level elements.
84
- # @raise [ArgumentError] This exception is raised if the hash contains values that are not hashes or nils.
87
+ #
88
+ # @raise [ArgumentError] This exception is raised if the hash has multiple
89
+ # top-level elements.
90
+ #
91
+ # @raise [ArgumentError] This exception is raised if the hash contains
92
+ # values that are not hashes or nils.
85
93
 
86
94
  def from_hash(hash)
87
- raise ArgumentError, "Argument must be a type of hash" unless hash.is_a?(Hash)
88
- raise ArgumentError, "Hash must have one top-level element" if hash.size != 1
95
+ raise ArgumentError, "Argument must be a type of hash"\
96
+ unless hash.is_a?(Hash)
97
+
98
+ raise ArgumentError, "Hash must have one top-level element"\
99
+ if hash.size != 1
89
100
 
90
101
  root, children = hash.first
91
102
 
@@ -127,7 +138,8 @@ module Tree::Utils::HashConverter
127
138
  # @return [Array] Array of child nodes added
128
139
  # @see ClassMethods#from_hash
129
140
  def add_from_hash(children)
130
- raise ArgumentError, "Argument must be a type of hash" unless children.is_a?(Hash)
141
+ raise ArgumentError, "Argument must be a type of hash"\
142
+ unless children.is_a?(Hash)
131
143
 
132
144
  child_nodes = []
133
145
  children.each do |child, grandchildren|
@@ -145,7 +157,9 @@ module Tree::Utils::HashConverter
145
157
  # root = Tree::TreeNode.new(:root, "root content")
146
158
  # root << Tree::TreeNode.new(:child1, "child1 content")
147
159
  # root << Tree::TreeNode.new(:child2, "child2 content")
148
- # root.to_h # => {[:root, "root content"] => { [:child1, "child1 content"] => {}, [:child2, "child2 content"] => {}}}
160
+ # root.to_h # => {[:root, "root content"] =>
161
+ # { [:child1, "child1 content"] =>
162
+ # {}, [:child2, "child2 content"] => {}}}
149
163
  # @author Jen Hamon (http://www.github.com/jhamon)
150
164
  # @return [Hash] Hash representation of tree.
151
165
  def to_h
@@ -4,21 +4,21 @@
4
4
  #
5
5
  # Author:: Anupam Sengupta (anupamsg@gmail.com)
6
6
  #
7
- # Time-stamp: <2014-10-25 16:16:23 anupam>
7
+ # Time-stamp: <2015-05-30 14:20:20 anupam>
8
8
  #
9
- # Copyright (C) 2012, 2013, 2014 Anupam Sengupta <anupamsg@gmail.com>
9
+ # Copyright (C) 2012, 2013, 2014, 2015 Anupam Sengupta <anupamsg@gmail.com>
10
10
  #
11
11
  # All rights reserved.
12
12
  #
13
- # Redistribution and use in source and binary forms, with or without modification,
14
- # are permitted provided that the following conditions are met:
13
+ # Redistribution and use in source and binary forms, with or without
14
+ # modification, are permitted provided that the following conditions are met:
15
15
  #
16
16
  # - Redistributions of source code must retain the above copyright notice, this
17
17
  # list of conditions and the following disclaimer.
18
18
  #
19
- # - Redistributions in binary form must reproduce the above copyright notice, this
20
- # list of conditions and the following disclaimer in the documentation and/or
21
- # other materials provided with the distribution.
19
+ # - Redistributions in binary form must reproduce the above copyright notice,
20
+ # this list of conditions and the following disclaimer in the documentation
21
+ # and/or other materials provided with the distribution.
22
22
  #
23
23
  # - Neither the name of the organization nor the names of its contributors may
24
24
  # be used to endorse or promote products derived from this software without
@@ -27,13 +27,13 @@
27
27
  # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
28
28
  # AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
29
29
  # IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
30
- # DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
31
- # ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
32
- # (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
33
- # LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
34
- # ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
35
- # (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
36
- # SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
30
+ # DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE
31
+ # FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
32
+ # DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
33
+ # SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
34
+ # CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
35
+ # OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
36
+ # OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
37
37
 
38
38
  require 'json'
39
39
 
@@ -54,7 +54,8 @@ module Tree::Utils::JSONConverter
54
54
  #
55
55
  # @return A hash based representation of the JSON
56
56
  #
57
- # Rails uses JSON in ActiveSupport, and all Rails JSON encoding goes through +as_json+.
57
+ # Rails uses JSON in ActiveSupport, and all Rails JSON encoding goes through
58
+ # +as_json+.
58
59
  #
59
60
  # @see #to_json
60
61
  # @see http://stackoverflow.com/a/6880638/273808
@@ -90,7 +91,8 @@ module Tree::Utils::JSONConverter
90
91
  as_json.to_json(*a)
91
92
  end
92
93
 
93
- # ClassMethods for the {JSONConverter} module. Will become class methods in the +include+ target.
94
+ # ClassMethods for the {JSONConverter} module. Will become class methods in
95
+ # the +include+ target.
94
96
  module ClassMethods
95
97
  # Helper method to create a Tree::TreeNode instance from the JSON hash
96
98
  # representation. Note that this method should *NOT* be called directly.