nbrew-better_nested_set 0.0.1
Sign up to get free protection for your applications and to get access to all the features.
- data/README +224 -0
- data/Rakefile.rb +28 -0
- data/lib/better_nested_set.rb +1129 -0
- data/lib/better_nested_set_helper.rb +127 -0
- data/rails/init.rb +14 -0
- data/test/RUNNING_UNIT_TESTS +1 -0
- data/test/abstract_unit.rb +25 -0
- data/test/acts_as_nested_set_test.rb +1368 -0
- data/test/database.yml +15 -0
- data/test/fixtures/mixin.rb +33 -0
- data/test/fixtures/mixins.yml +66 -0
- data/test/mysql.rb +2 -0
- data/test/postgresql.rb +2 -0
- data/test/schema.rb +12 -0
- data/test/sqlite3.rb +2 -0
- metadata +90 -0
data/test/database.yml
ADDED
@@ -0,0 +1,15 @@
|
|
1
|
+
mysql:
|
2
|
+
:adapter: mysql
|
3
|
+
:host: localhost
|
4
|
+
:username: rails
|
5
|
+
:password:
|
6
|
+
:database: acts_as_nested_set_plugin_test
|
7
|
+
postgresql:
|
8
|
+
:adapter: postgresql
|
9
|
+
:host: localhost
|
10
|
+
:username: rails
|
11
|
+
:password:
|
12
|
+
:database: acts_as_nested_set_plugin_test
|
13
|
+
sqlite3:
|
14
|
+
:adapter: sqlite3
|
15
|
+
:dbfile: test/acts_as_nested_set_plugin_test.db
|
@@ -0,0 +1,33 @@
|
|
1
|
+
class Mixin < ActiveRecord::Base
|
2
|
+
belongs_to :parent_node, :class_name => 'Mixin', :foreign_key => 'parent_id'
|
3
|
+
end
|
4
|
+
|
5
|
+
class NestedSet < Mixin
|
6
|
+
acts_as_nested_set :scope => "mixins.root_id IS NULL"
|
7
|
+
end
|
8
|
+
|
9
|
+
class NestedSetWithStringScope < Mixin
|
10
|
+
acts_as_nested_set :scope => 'mixins.root_id = #{root_id}'
|
11
|
+
end
|
12
|
+
|
13
|
+
class NS1 < NestedSetWithStringScope
|
14
|
+
end
|
15
|
+
|
16
|
+
class NS2 < NS1
|
17
|
+
my_callbacks = [:before_create, :before_save, :before_update, :before_destroy,
|
18
|
+
:after_create, :after_save, :after_update, :after_destroy]
|
19
|
+
my_callbacks.each do |sym|
|
20
|
+
define_method(sym) do
|
21
|
+
$callbacks ||= []
|
22
|
+
$callbacks << sym
|
23
|
+
end
|
24
|
+
end
|
25
|
+
end
|
26
|
+
|
27
|
+
class NestedSetWithSymbolScope < Mixin
|
28
|
+
acts_as_nested_set :scope => :root
|
29
|
+
end
|
30
|
+
|
31
|
+
class Category < Mixin
|
32
|
+
acts_as_nested_set
|
33
|
+
end
|
@@ -0,0 +1,66 @@
|
|
1
|
+
# Nested set mixins
|
2
|
+
|
3
|
+
<% (1..10).each do |counter| %>
|
4
|
+
set_<%= counter %>:
|
5
|
+
id: <%= counter+3000 %>
|
6
|
+
type: NestedSet
|
7
|
+
<% end %>
|
8
|
+
|
9
|
+
# Big old set
|
10
|
+
<%
|
11
|
+
[[4001, 0, 1, 20],
|
12
|
+
[4002, 4001, 2, 7],
|
13
|
+
[4003, 4002, 3, 4],
|
14
|
+
[4004, 4002, 5, 6],
|
15
|
+
[4005, 4001, 8, 13],
|
16
|
+
[4006, 4005, 9, 10],
|
17
|
+
[4007, 4005, 11, 12],
|
18
|
+
[4008, 4001, 14, 19],
|
19
|
+
[4009, 4008, 15, 16],
|
20
|
+
[4010, 4008, 17, 18]].each do |set| %>
|
21
|
+
tree_<%= set[0] %>:
|
22
|
+
id: <%= set[0]%>
|
23
|
+
parent_id: <%= set[1]%>
|
24
|
+
type: NestedSetWithStringScope
|
25
|
+
lft: <%= set[2]%>
|
26
|
+
rgt: <%= set[3]%>
|
27
|
+
root_id: 42
|
28
|
+
|
29
|
+
<% end %>
|
30
|
+
|
31
|
+
|
32
|
+
# Third group of nested set fixtures.
|
33
|
+
# the following schematic may help when working with this nested set:
|
34
|
+
# ____________________________________________________________________________________________________________
|
35
|
+
# | root_node |
|
36
|
+
# | _____________ _______________________________________ _________________________________________ |
|
37
|
+
# | | child_left | | child_middle | | child_right | |
|
38
|
+
# | | | | _________ _________ _________ | | _________ ___________________ | |
|
39
|
+
# | | | | | gc_1 | | gc_2 | | gc_3 | | | | gc_4 | | gc_5 | | |
|
40
|
+
# | | | | | | | | | | | | | | | ___________ | | |
|
41
|
+
# | | | | | | | | | | | | | | | | gg_child | | | |
|
42
|
+
# 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16________17 18 19 20
|
43
|
+
# | | | | |________| |________| |________| | | |________| |__________________| | |
|
44
|
+
# | |____________| |_______________________________________| |_______________________________________| |
|
45
|
+
# |___________________________________________________________________________________________________________|
|
46
|
+
<%
|
47
|
+
[ ["root_node", 101, 1, 1, 20, 0, "NS1"],
|
48
|
+
["child_left", 102, 1, 2, 3, 101, "NestedSetWithStringScope"],
|
49
|
+
["child_middle", 103, 3, 4, 11, 101, "NS2"],
|
50
|
+
["child_right", 104, 5, 12, 19, 101, "NestedSetWithStringScope"],
|
51
|
+
["gc_1", 105, 3, 5, 6, 103, "NestedSetWithStringScope"],
|
52
|
+
["gc_2", 106, 3, 7, 8, 103, "NestedSetWithStringScope"],
|
53
|
+
["gc_3", 107, 3, 9, 10, 103, "NestedSetWithStringScope"],
|
54
|
+
["gc_4", 108, 6, 13, 14, 104, "NS2"],
|
55
|
+
["gc_5", 109, 7, 15, 18, 104, "NS1"],
|
56
|
+
["gg_child", 110, 9, 16, 17, 109, "NestedSetWithStringScope"]].each do |set| %>
|
57
|
+
ns_<%= set[0] %>:
|
58
|
+
id: <%= set[1]%>
|
59
|
+
parent_id: <%= set[5]%>
|
60
|
+
pos: <%= set[2]%>
|
61
|
+
lft: <%= set[3]%>
|
62
|
+
rgt: <%= set[4]%>
|
63
|
+
root_id: 101
|
64
|
+
type: <%= set[6]%>
|
65
|
+
|
66
|
+
<% end %>
|
data/test/mysql.rb
ADDED
data/test/postgresql.rb
ADDED
data/test/schema.rb
ADDED
@@ -0,0 +1,12 @@
|
|
1
|
+
ActiveRecord::Schema.define :version => 0 do
|
2
|
+
create_table :mixins, :force => true do |t|
|
3
|
+
t.column :parent_id, :integer
|
4
|
+
t.column :pos, :integer
|
5
|
+
t.column :created_at, :datetime
|
6
|
+
t.column :updated_at, :datetime
|
7
|
+
t.column :lft, :integer
|
8
|
+
t.column :rgt, :integer
|
9
|
+
t.column :root_id, :integer
|
10
|
+
t.column :type, :string
|
11
|
+
end
|
12
|
+
end
|
data/test/sqlite3.rb
ADDED
metadata
ADDED
@@ -0,0 +1,90 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: nbrew-better_nested_set
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
hash: 29
|
5
|
+
prerelease: false
|
6
|
+
segments:
|
7
|
+
- 0
|
8
|
+
- 0
|
9
|
+
- 1
|
10
|
+
version: 0.0.1
|
11
|
+
platform: ruby
|
12
|
+
authors:
|
13
|
+
- "Jean-Christophe Michel, Sym\xC3\xA9trie, Chris Bailey"
|
14
|
+
autorequire:
|
15
|
+
bindir: bin
|
16
|
+
cert_chain: []
|
17
|
+
|
18
|
+
date: 2011-02-17 00:00:00 -08:00
|
19
|
+
default_executable:
|
20
|
+
dependencies: []
|
21
|
+
|
22
|
+
description: "An enhanced acts_as_nested_set mixin for ActiveRecord. A Gemified version of the betternestedset svn repo at svn://rubyforge.org/var/svn/betternestedset/trunk "
|
23
|
+
email: nhyde@bigdrift.com
|
24
|
+
executables: []
|
25
|
+
|
26
|
+
extensions: []
|
27
|
+
|
28
|
+
extra_rdoc_files:
|
29
|
+
- README
|
30
|
+
- test/RUNNING_UNIT_TESTS
|
31
|
+
files:
|
32
|
+
- README
|
33
|
+
- Rakefile.rb
|
34
|
+
- lib/better_nested_set.rb
|
35
|
+
- lib/better_nested_set_helper.rb
|
36
|
+
- rails/init.rb
|
37
|
+
- test/abstract_unit.rb
|
38
|
+
- test/acts_as_nested_set_test.rb
|
39
|
+
- test/database.yml
|
40
|
+
- test/fixtures/mixin.rb
|
41
|
+
- test/fixtures/mixins.yml
|
42
|
+
- test/mysql.rb
|
43
|
+
- test/postgresql.rb
|
44
|
+
- test/RUNNING_UNIT_TESTS
|
45
|
+
- test/schema.rb
|
46
|
+
- test/sqlite3.rb
|
47
|
+
has_rdoc: true
|
48
|
+
homepage: http://github.com/nbrew/better_nested_set
|
49
|
+
licenses: []
|
50
|
+
|
51
|
+
post_install_message:
|
52
|
+
rdoc_options:
|
53
|
+
- --charset=UTF-8
|
54
|
+
require_paths:
|
55
|
+
- lib
|
56
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
57
|
+
none: false
|
58
|
+
requirements:
|
59
|
+
- - ">="
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
hash: 3
|
62
|
+
segments:
|
63
|
+
- 0
|
64
|
+
version: "0"
|
65
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
66
|
+
none: false
|
67
|
+
requirements:
|
68
|
+
- - ">="
|
69
|
+
- !ruby/object:Gem::Version
|
70
|
+
hash: 3
|
71
|
+
segments:
|
72
|
+
- 0
|
73
|
+
version: "0"
|
74
|
+
requirements: []
|
75
|
+
|
76
|
+
rubyforge_project:
|
77
|
+
rubygems_version: 1.3.7
|
78
|
+
signing_key:
|
79
|
+
specification_version: 3
|
80
|
+
summary: ""
|
81
|
+
test_files:
|
82
|
+
- test/abstract_unit.rb
|
83
|
+
- test/acts_as_nested_set_test.rb
|
84
|
+
- test/database.yml
|
85
|
+
- test/fixtures/mixin.rb
|
86
|
+
- test/fixtures/mixins.yml
|
87
|
+
- test/mysql.rb
|
88
|
+
- test/postgresql.rb
|
89
|
+
- test/schema.rb
|
90
|
+
- test/sqlite3.rb
|