acts_as_tree 2.5.1 → 2.6.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.md +2 -0
- data/lib/acts_as_tree.rb +28 -0
- data/lib/acts_as_tree/version.rb +1 -1
- data/test/acts_as_tree_test.rb +54 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: c1348043cad77cbacfb197eb2d96ff6e1ac84be3
|
4
|
+
data.tar.gz: 305512fe8ce041f273a65fe951343e8a37555a93
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 81a7871c4c36509e001435e8161415fe067768bf8080b1ef824e7d95ec2a710075a3974fc141eb7d15f3d87c3b6d5dbe4a4d9b858d1f32a66555b26cd7885b83
|
7
|
+
data.tar.gz: 033de96f25e5a03f3e605a6c7940ce440819bf0754154ac24dfac1568c34880107647e7d4164ef102d3ad2b07e7f50d6ea634a997b4de10fd65ffdbf5bc7de94
|
data/README.md
CHANGED
@@ -74,6 +74,8 @@ We no longer support Ruby 1.8 or versions of Rails/ActiveRecord older than 3.0.
|
|
74
74
|
Moving forward we will do our best to support the latest versions of ActiveRecord and Ruby.
|
75
75
|
|
76
76
|
## Change Log
|
77
|
+
* 2.6.0 - October 9, 2016
|
78
|
+
* Add generations methods, see #56 -- markhgbrewster
|
77
79
|
* 2.5.1 - September 8, 2016
|
78
80
|
* Fix early database connection in acts\_as\_tree, see #55 -- felixbuenemann
|
79
81
|
* 2.5.0 - August 14, 2016
|
data/lib/acts_as_tree.rb
CHANGED
@@ -125,6 +125,13 @@ module ActsAsTree
|
|
125
125
|
end
|
126
126
|
EOV
|
127
127
|
|
128
|
+
# Returns a hash of all nodes grouped by their level in the tree structure.
|
129
|
+
#
|
130
|
+
# Class.generations { 0=> [root1, root2], 1=> [root1child1, root1child2, root2child1, root2child2] }
|
131
|
+
def self.generations
|
132
|
+
all.group_by{ |node| node.level }
|
133
|
+
end
|
134
|
+
|
128
135
|
if configuration[:counter_cache]
|
129
136
|
after_update :update_parents_counter_cache
|
130
137
|
|
@@ -281,6 +288,27 @@ module ActsAsTree
|
|
281
288
|
parent ? parent.children : self.class.roots
|
282
289
|
end
|
283
290
|
|
291
|
+
# Returns all the nodes at the same level in the tree as the current node.
|
292
|
+
#
|
293
|
+
# root1child1.generation [root1child2, root2child1, root2child2]
|
294
|
+
def generation
|
295
|
+
self_and_generation - [self]
|
296
|
+
end
|
297
|
+
|
298
|
+
# Returns a reference to the current node and all the nodes at the same level as it in the tree.
|
299
|
+
#
|
300
|
+
# root1child1.generation [root1child1, root1child2, root2child1, root2child2]
|
301
|
+
def self_and_generation
|
302
|
+
self.class.select {|node| node.level == self.level }
|
303
|
+
end
|
304
|
+
|
305
|
+
# Returns the level (depth) of the current node
|
306
|
+
#
|
307
|
+
# root1child1.level 1
|
308
|
+
def level
|
309
|
+
self.ancestors.size
|
310
|
+
end
|
311
|
+
|
284
312
|
# Returns children (without subchildren) and current node itself.
|
285
313
|
#
|
286
314
|
# root.self_and_children # => [root, child1]
|
data/lib/acts_as_tree/version.rb
CHANGED
data/test/acts_as_tree_test.rb
CHANGED
@@ -496,7 +496,6 @@ class TreeTestWithCounterCache < ActsAsTreeTestCase
|
|
496
496
|
end
|
497
497
|
end
|
498
498
|
|
499
|
-
|
500
499
|
class TreeTestWithTouch < ActsAsTreeTestCase
|
501
500
|
def setup
|
502
501
|
setup_db
|
@@ -541,3 +540,57 @@ class ExternalTreeTest < TreeTest
|
|
541
540
|
assert_nil root4_child.reload.external_parent_id
|
542
541
|
end
|
543
542
|
end
|
543
|
+
|
544
|
+
class GenertaionMethods < ActsAsTreeTestCase
|
545
|
+
def setup
|
546
|
+
setup_db
|
547
|
+
|
548
|
+
@root1 = TreeMixin.create!
|
549
|
+
@root_child1 = TreeMixin.create! parent_id: @root1.id
|
550
|
+
@child1_child = TreeMixin.create! parent_id: @root_child1.id
|
551
|
+
@child1_child_child = TreeMixin.create! parent_id: @child1_child.id
|
552
|
+
@root_child2 = TreeMixin.create! parent_id: @root1.id
|
553
|
+
@root2 = TreeMixin.create!
|
554
|
+
@root2_child1 = TreeMixin.create! parent_id: @root2.id
|
555
|
+
@root2_child2 = TreeMixin.create! parent_id: @root2.id
|
556
|
+
@root2_child1_child = TreeMixin.create! parent_id: @root2_child1.id
|
557
|
+
@root3 = TreeMixin.create!
|
558
|
+
end
|
559
|
+
|
560
|
+
def test_generations
|
561
|
+
assert_equal(
|
562
|
+
{
|
563
|
+
0 => [@root1, @root2, @root3],
|
564
|
+
1 => [@root_child1, @root_child2, @root2_child1, @root2_child2],
|
565
|
+
2 => [@child1_child, @root2_child1_child],
|
566
|
+
3 => [@child1_child_child]
|
567
|
+
},
|
568
|
+
TreeMixin.generations
|
569
|
+
)
|
570
|
+
end
|
571
|
+
|
572
|
+
def test_generation
|
573
|
+
assert_equal [@root2, @root3], @root1.generation
|
574
|
+
assert_equal [@root_child2, @root2_child1, @root2_child2],
|
575
|
+
@root_child1.generation
|
576
|
+
assert_equal [@root2_child1_child], @child1_child.generation
|
577
|
+
assert_equal [], @child1_child_child.generation
|
578
|
+
end
|
579
|
+
|
580
|
+
def test_self_and_generation
|
581
|
+
assert_equal [@root1, @root2, @root3], @root1.self_and_generation
|
582
|
+
assert_equal [@root_child1, @root_child2, @root2_child1, @root2_child2],
|
583
|
+
@root_child1.self_and_generation
|
584
|
+
assert_equal [@child1_child, @root2_child1_child],
|
585
|
+
@child1_child.self_and_generation
|
586
|
+
assert_equal [@child1_child_child], @child1_child_child.self_and_generation
|
587
|
+
end
|
588
|
+
|
589
|
+
def test_level
|
590
|
+
assert_equal 0, @root1.level
|
591
|
+
assert_equal 1, @root_child1.level
|
592
|
+
assert_equal 2, @child1_child.level
|
593
|
+
assert_equal 3, @child1_child_child.level
|
594
|
+
end
|
595
|
+
end
|
596
|
+
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: acts_as_tree
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 2.
|
4
|
+
version: 2.6.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Erik Dahlstrand
|
@@ -12,7 +12,7 @@ authors:
|
|
12
12
|
autorequire:
|
13
13
|
bindir: bin
|
14
14
|
cert_chain: []
|
15
|
-
date: 2016-09
|
15
|
+
date: 2016-10-09 00:00:00.000000000 Z
|
16
16
|
dependencies:
|
17
17
|
- !ruby/object:Gem::Dependency
|
18
18
|
name: activerecord
|