dm-is-tree 1.1.0 → 1.2.0.rc1
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.
- data/Gemfile +8 -8
- data/README.rdoc +7 -2
- data/Rakefile +1 -1
- data/VERSION +1 -1
- data/dm-is-tree.gemspec +22 -27
- data/lib/dm-is-tree/is/tree.rb +2 -0
- data/spec/unit/tree_spec.rb +5 -0
- metadata +65 -32
data/Gemfile
CHANGED
|
@@ -5,26 +5,26 @@ source 'http://rubygems.org'
|
|
|
5
5
|
SOURCE = ENV.fetch('SOURCE', :git).to_sym
|
|
6
6
|
REPO_POSTFIX = SOURCE == :path ? '' : '.git'
|
|
7
7
|
DATAMAPPER = SOURCE == :path ? Pathname(__FILE__).dirname.parent : 'http://github.com/datamapper'
|
|
8
|
-
DM_VERSION = '~> 1.
|
|
9
|
-
DO_VERSION = '~> 0.10.
|
|
8
|
+
DM_VERSION = '~> 1.2.0.rc1'
|
|
9
|
+
DO_VERSION = '~> 0.10.6'
|
|
10
10
|
DM_DO_ADAPTERS = %w[ sqlite postgres mysql oracle sqlserver ]
|
|
11
11
|
|
|
12
12
|
gem 'dm-core', DM_VERSION, SOURCE => "#{DATAMAPPER}/dm-core#{REPO_POSTFIX}"
|
|
13
13
|
|
|
14
14
|
group :development do
|
|
15
15
|
|
|
16
|
-
gem 'jeweler', '~> 1.
|
|
17
|
-
gem 'rake', '~> 0.
|
|
18
|
-
gem 'rspec', '~> 1.3.
|
|
16
|
+
gem 'jeweler', '~> 1.6.4'
|
|
17
|
+
gem 'rake', '~> 0.9.2'
|
|
18
|
+
gem 'rspec', '~> 1.3.2'
|
|
19
19
|
|
|
20
20
|
end
|
|
21
21
|
|
|
22
22
|
platforms :mri_18 do
|
|
23
23
|
group :quality do
|
|
24
24
|
|
|
25
|
-
gem 'rcov', '~> 0.9.
|
|
26
|
-
gem 'yard', '~> 0.
|
|
27
|
-
gem 'yardstick', '~> 0.
|
|
25
|
+
gem 'rcov', '~> 0.9.10'
|
|
26
|
+
gem 'yard', '~> 0.7.2'
|
|
27
|
+
gem 'yardstick', '~> 0.4'
|
|
28
28
|
|
|
29
29
|
end
|
|
30
30
|
end
|
data/README.rdoc
CHANGED
|
@@ -173,7 +173,7 @@ To add a child you can use either of these syntaxes:
|
|
|
173
173
|
child = the_parent.children.create(:name => "child")
|
|
174
174
|
|
|
175
175
|
grandchild1 = Category.create(:name => "grandchild1")
|
|
176
|
-
child.children
|
|
176
|
+
child.children << grandchild1
|
|
177
177
|
|
|
178
178
|
grandchild2 = child.children.create(:name => "grandchild2")
|
|
179
179
|
|
|
@@ -260,7 +260,12 @@ The <tt>#roots</tt> class method returns an Array of the roots declared in the m
|
|
|
260
260
|
child = parent.children.create(:name => "child")
|
|
261
261
|
|
|
262
262
|
grandchild1 = child.children.create(:name => "grandchild1")
|
|
263
|
-
|
|
263
|
+
|
|
264
|
+
grandchild2 = Category.create(:name => "grandchild2")
|
|
265
|
+
child.children << grandchild2
|
|
266
|
+
|
|
267
|
+
grandchild3 = Category.create(:name => "grandchild2")
|
|
268
|
+
grandchild3.parent = child
|
|
264
269
|
|
|
265
270
|
parent.parent # => nil
|
|
266
271
|
child.parent # => parent
|
data/Rakefile
CHANGED
data/VERSION
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
1.
|
|
1
|
+
1.2.0.rc1
|
data/dm-is-tree.gemspec
CHANGED
|
@@ -4,14 +4,14 @@
|
|
|
4
4
|
# -*- encoding: utf-8 -*-
|
|
5
5
|
|
|
6
6
|
Gem::Specification.new do |s|
|
|
7
|
-
s.name =
|
|
8
|
-
s.version = "1.
|
|
7
|
+
s.name = "dm-is-tree"
|
|
8
|
+
s.version = "1.2.0.rc1"
|
|
9
9
|
|
|
10
|
-
s.required_rubygems_version = Gem::Requirement.new("
|
|
10
|
+
s.required_rubygems_version = Gem::Requirement.new("> 1.3.1") if s.respond_to? :required_rubygems_version=
|
|
11
11
|
s.authors = ["Timothy Bennett"]
|
|
12
|
-
s.date =
|
|
13
|
-
s.description =
|
|
14
|
-
s.email =
|
|
12
|
+
s.date = "2011-09-09"
|
|
13
|
+
s.description = "DataMapper plugin allowing the creation of tree structures from data models"
|
|
14
|
+
s.email = "leapord729 [a] comcast.net"
|
|
15
15
|
s.extra_rdoc_files = [
|
|
16
16
|
"LICENSE",
|
|
17
17
|
"README.rdoc"
|
|
@@ -34,36 +34,31 @@ Gem::Specification.new do |s|
|
|
|
34
34
|
"tasks/yard.rake",
|
|
35
35
|
"tasks/yardstick.rake"
|
|
36
36
|
]
|
|
37
|
-
s.homepage =
|
|
37
|
+
s.homepage = "http://github.com/datamapper/dm-is-tree"
|
|
38
38
|
s.require_paths = ["lib"]
|
|
39
|
-
s.rubyforge_project =
|
|
40
|
-
s.rubygems_version =
|
|
41
|
-
s.summary =
|
|
42
|
-
s.test_files = [
|
|
43
|
-
"spec/integration/tree_spec.rb",
|
|
44
|
-
"spec/spec_helper.rb",
|
|
45
|
-
"spec/unit/tree_spec.rb"
|
|
46
|
-
]
|
|
39
|
+
s.rubyforge_project = "datamapper"
|
|
40
|
+
s.rubygems_version = "1.8.10"
|
|
41
|
+
s.summary = "DataMapper plugin allowing the creation of tree structures from data models"
|
|
47
42
|
|
|
48
43
|
if s.respond_to? :specification_version then
|
|
49
44
|
s.specification_version = 3
|
|
50
45
|
|
|
51
46
|
if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
|
|
52
|
-
s.add_runtime_dependency(%q<dm-core>, ["~> 1.
|
|
53
|
-
s.add_development_dependency(%q<jeweler>, ["~> 1.
|
|
54
|
-
s.add_development_dependency(%q<rake>, ["~> 0.
|
|
55
|
-
s.add_development_dependency(%q<rspec>, ["~> 1.3.
|
|
47
|
+
s.add_runtime_dependency(%q<dm-core>, ["~> 1.2.0.rc1"])
|
|
48
|
+
s.add_development_dependency(%q<jeweler>, ["~> 1.6.4"])
|
|
49
|
+
s.add_development_dependency(%q<rake>, ["~> 0.9.2"])
|
|
50
|
+
s.add_development_dependency(%q<rspec>, ["~> 1.3.2"])
|
|
56
51
|
else
|
|
57
|
-
s.add_dependency(%q<dm-core>, ["~> 1.
|
|
58
|
-
s.add_dependency(%q<jeweler>, ["~> 1.
|
|
59
|
-
s.add_dependency(%q<rake>, ["~> 0.
|
|
60
|
-
s.add_dependency(%q<rspec>, ["~> 1.3.
|
|
52
|
+
s.add_dependency(%q<dm-core>, ["~> 1.2.0.rc1"])
|
|
53
|
+
s.add_dependency(%q<jeweler>, ["~> 1.6.4"])
|
|
54
|
+
s.add_dependency(%q<rake>, ["~> 0.9.2"])
|
|
55
|
+
s.add_dependency(%q<rspec>, ["~> 1.3.2"])
|
|
61
56
|
end
|
|
62
57
|
else
|
|
63
|
-
s.add_dependency(%q<dm-core>, ["~> 1.
|
|
64
|
-
s.add_dependency(%q<jeweler>, ["~> 1.
|
|
65
|
-
s.add_dependency(%q<rake>, ["~> 0.
|
|
66
|
-
s.add_dependency(%q<rspec>, ["~> 1.3.
|
|
58
|
+
s.add_dependency(%q<dm-core>, ["~> 1.2.0.rc1"])
|
|
59
|
+
s.add_dependency(%q<jeweler>, ["~> 1.6.4"])
|
|
60
|
+
s.add_dependency(%q<rake>, ["~> 0.9.2"])
|
|
61
|
+
s.add_dependency(%q<rspec>, ["~> 1.3.2"])
|
|
67
62
|
end
|
|
68
63
|
end
|
|
69
64
|
|
data/lib/dm-is-tree/is/tree.rb
CHANGED
|
@@ -60,6 +60,7 @@ module DataMapper
|
|
|
60
60
|
# Configuration options are:
|
|
61
61
|
#
|
|
62
62
|
# * <tt>child_key</tt> - specifies the column name to use for tracking of the tree (default: +parent_id+)
|
|
63
|
+
# * <tt>constraint</tt> - allows a constraint option to be set on the `has n` association. Only valid when dm-constraints is used.
|
|
63
64
|
def is_tree(options = {})
|
|
64
65
|
|
|
65
66
|
if options[:class_name]
|
|
@@ -75,6 +76,7 @@ module DataMapper
|
|
|
75
76
|
|
|
76
77
|
assc_options = { :model => options[:model], :child_key => Array(options[:child_key]) }
|
|
77
78
|
has_n_options = options[:order] ? { :order => Array(options[:order]) }.merge(assc_options) : assc_options
|
|
79
|
+
has_n_options.merge!(:constraint => options[:constraint]) if options[:constraint]
|
|
78
80
|
|
|
79
81
|
belongs_to :parent, assc_options.merge(:required => false)
|
|
80
82
|
has n, :children, has_n_options
|
data/spec/unit/tree_spec.rb
CHANGED
|
@@ -83,6 +83,11 @@ describe DataMapper::Is::Tree do
|
|
|
83
83
|
Category.relationships[:parent].options.should_not have_key(:order)
|
|
84
84
|
end
|
|
85
85
|
|
|
86
|
+
it 'should allow a constraint option to be specified' do
|
|
87
|
+
Category.is :tree, :constraint => :destroy
|
|
88
|
+
Category.relationships[:parent].options.should have_key(:constraint)
|
|
89
|
+
end
|
|
90
|
+
|
|
86
91
|
end
|
|
87
92
|
|
|
88
93
|
describe "children relationship" do
|
metadata
CHANGED
|
@@ -1,8 +1,15 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: dm-is-tree
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
|
|
5
|
-
|
|
4
|
+
hash: 15424023
|
|
5
|
+
prerelease: 6
|
|
6
|
+
segments:
|
|
7
|
+
- 1
|
|
8
|
+
- 2
|
|
9
|
+
- 0
|
|
10
|
+
- rc
|
|
11
|
+
- 1
|
|
12
|
+
version: 1.2.0.rc1
|
|
6
13
|
platform: ruby
|
|
7
14
|
authors:
|
|
8
15
|
- Timothy Bennett
|
|
@@ -10,53 +17,74 @@ autorequire:
|
|
|
10
17
|
bindir: bin
|
|
11
18
|
cert_chain: []
|
|
12
19
|
|
|
13
|
-
date: 2011-
|
|
14
|
-
default_executable:
|
|
20
|
+
date: 2011-09-09 00:00:00 Z
|
|
15
21
|
dependencies:
|
|
16
22
|
- !ruby/object:Gem::Dependency
|
|
17
|
-
|
|
18
|
-
|
|
23
|
+
type: :runtime
|
|
24
|
+
version_requirements: &id001 !ruby/object:Gem::Requirement
|
|
19
25
|
none: false
|
|
20
26
|
requirements:
|
|
21
27
|
- - ~>
|
|
22
28
|
- !ruby/object:Gem::Version
|
|
23
|
-
|
|
24
|
-
|
|
29
|
+
hash: 15424023
|
|
30
|
+
segments:
|
|
31
|
+
- 1
|
|
32
|
+
- 2
|
|
33
|
+
- 0
|
|
34
|
+
- rc
|
|
35
|
+
- 1
|
|
36
|
+
version: 1.2.0.rc1
|
|
25
37
|
prerelease: false
|
|
26
|
-
|
|
38
|
+
requirement: *id001
|
|
39
|
+
name: dm-core
|
|
27
40
|
- !ruby/object:Gem::Dependency
|
|
28
|
-
|
|
29
|
-
|
|
41
|
+
type: :development
|
|
42
|
+
version_requirements: &id002 !ruby/object:Gem::Requirement
|
|
30
43
|
none: false
|
|
31
44
|
requirements:
|
|
32
45
|
- - ~>
|
|
33
46
|
- !ruby/object:Gem::Version
|
|
34
|
-
|
|
35
|
-
|
|
47
|
+
hash: 7
|
|
48
|
+
segments:
|
|
49
|
+
- 1
|
|
50
|
+
- 6
|
|
51
|
+
- 4
|
|
52
|
+
version: 1.6.4
|
|
36
53
|
prerelease: false
|
|
37
|
-
|
|
54
|
+
requirement: *id002
|
|
55
|
+
name: jeweler
|
|
38
56
|
- !ruby/object:Gem::Dependency
|
|
39
|
-
|
|
40
|
-
|
|
57
|
+
type: :development
|
|
58
|
+
version_requirements: &id003 !ruby/object:Gem::Requirement
|
|
41
59
|
none: false
|
|
42
60
|
requirements:
|
|
43
61
|
- - ~>
|
|
44
62
|
- !ruby/object:Gem::Version
|
|
45
|
-
|
|
46
|
-
|
|
63
|
+
hash: 63
|
|
64
|
+
segments:
|
|
65
|
+
- 0
|
|
66
|
+
- 9
|
|
67
|
+
- 2
|
|
68
|
+
version: 0.9.2
|
|
47
69
|
prerelease: false
|
|
48
|
-
|
|
70
|
+
requirement: *id003
|
|
71
|
+
name: rake
|
|
49
72
|
- !ruby/object:Gem::Dependency
|
|
50
|
-
|
|
51
|
-
|
|
73
|
+
type: :development
|
|
74
|
+
version_requirements: &id004 !ruby/object:Gem::Requirement
|
|
52
75
|
none: false
|
|
53
76
|
requirements:
|
|
54
77
|
- - ~>
|
|
55
78
|
- !ruby/object:Gem::Version
|
|
56
|
-
|
|
57
|
-
|
|
79
|
+
hash: 31
|
|
80
|
+
segments:
|
|
81
|
+
- 1
|
|
82
|
+
- 3
|
|
83
|
+
- 2
|
|
84
|
+
version: 1.3.2
|
|
58
85
|
prerelease: false
|
|
59
|
-
|
|
86
|
+
requirement: *id004
|
|
87
|
+
name: rspec
|
|
60
88
|
description: DataMapper plugin allowing the creation of tree structures from data models
|
|
61
89
|
email: leapord729 [a] comcast.net
|
|
62
90
|
executables: []
|
|
@@ -83,7 +111,6 @@ files:
|
|
|
83
111
|
- tasks/spec.rake
|
|
84
112
|
- tasks/yard.rake
|
|
85
113
|
- tasks/yardstick.rake
|
|
86
|
-
has_rdoc: true
|
|
87
114
|
homepage: http://github.com/datamapper/dm-is-tree
|
|
88
115
|
licenses: []
|
|
89
116
|
|
|
@@ -97,21 +124,27 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
|
97
124
|
requirements:
|
|
98
125
|
- - ">="
|
|
99
126
|
- !ruby/object:Gem::Version
|
|
127
|
+
hash: 3
|
|
128
|
+
segments:
|
|
129
|
+
- 0
|
|
100
130
|
version: "0"
|
|
101
131
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
|
102
132
|
none: false
|
|
103
133
|
requirements:
|
|
104
|
-
- - "
|
|
134
|
+
- - ">"
|
|
105
135
|
- !ruby/object:Gem::Version
|
|
106
|
-
|
|
136
|
+
hash: 25
|
|
137
|
+
segments:
|
|
138
|
+
- 1
|
|
139
|
+
- 3
|
|
140
|
+
- 1
|
|
141
|
+
version: 1.3.1
|
|
107
142
|
requirements: []
|
|
108
143
|
|
|
109
144
|
rubyforge_project: datamapper
|
|
110
|
-
rubygems_version: 1.
|
|
145
|
+
rubygems_version: 1.8.10
|
|
111
146
|
signing_key:
|
|
112
147
|
specification_version: 3
|
|
113
148
|
summary: DataMapper plugin allowing the creation of tree structures from data models
|
|
114
|
-
test_files:
|
|
115
|
-
|
|
116
|
-
- spec/spec_helper.rb
|
|
117
|
-
- spec/unit/tree_spec.rb
|
|
149
|
+
test_files: []
|
|
150
|
+
|