locomotive-mongoid-tree 0.6.2

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.
@@ -0,0 +1,21 @@
1
+ require 'rubygems'
2
+ require 'bundler/setup'
3
+
4
+ require 'mongoid'
5
+ require 'mongoid/tree'
6
+
7
+ require 'rspec'
8
+
9
+ Mongoid.configure do |config|
10
+ config.master = Mongo::Connection.new.db('mongoid_tree_test')
11
+ config.allow_dynamic_fields = false
12
+ end
13
+
14
+ Dir["#{File.dirname(__FILE__)}/support/**/*.rb"].each { |f| require f }
15
+
16
+ RSpec.configure do |config|
17
+ config.mock_with :rspec
18
+ config.after :each do
19
+ Mongoid.master.collections.reject { |c| c.name =~ /^system\./ }.each(&:drop)
20
+ end
21
+ end
@@ -0,0 +1,44 @@
1
+ require 'yaml'
2
+
3
+ module Mongoid::Tree::TreeMacros
4
+
5
+ def setup_tree(tree)
6
+ create_tree(YAML.load(tree))
7
+ end
8
+
9
+ def node(name)
10
+ @nodes[name].reload
11
+ end
12
+
13
+ def print_tree(node, inspect = false, depth = 0)
14
+ print ' ' * depth
15
+ print '- ' unless depth == 0
16
+ print node.name
17
+ print " (#{node.inspect})" if inspect
18
+ print ':' if node.children.any?
19
+ print "\n"
20
+ node.children.each { |c| print_tree(c, inspect, depth + 1) }
21
+ end
22
+
23
+ private
24
+ def create_tree(object)
25
+ case object
26
+ when String then return create_node(object)
27
+ when Array then object.each { |tree| create_tree(tree) }
28
+ when Hash then
29
+ name, children = object.first
30
+ node = create_node(name)
31
+ children.each { |c| node.children << create_tree(c) }
32
+ return node
33
+ end
34
+ end
35
+
36
+ def create_node(name)
37
+ @nodes ||= HashWithIndifferentAccess.new
38
+ @nodes[name] = subject.create(:name => name)
39
+ end
40
+ end
41
+
42
+ RSpec.configure do |config|
43
+ config.include Mongoid::Tree::TreeMacros
44
+ end
@@ -0,0 +1,28 @@
1
+ class Node
2
+ include Mongoid::Document
3
+ include Mongoid::Tree
4
+ include Mongoid::Tree::Traversal
5
+
6
+ field :name
7
+
8
+ attr_accessible :name
9
+ end
10
+
11
+ class SubclassedNode < Node
12
+ end
13
+
14
+ # Adding ordering on subclasses currently doesn't work as expected.
15
+ #
16
+ # class OrderedNode < Node
17
+ # include Mongoid::Tree::Ordering
18
+ # end
19
+ class OrderedNode
20
+ include Mongoid::Document
21
+ include Mongoid::Tree
22
+ include Mongoid::Tree::Traversal
23
+ include Mongoid::Tree::Ordering
24
+
25
+ field :name
26
+
27
+ attr_accessible :name
28
+ end
metadata ADDED
@@ -0,0 +1,125 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: locomotive-mongoid-tree
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.6.2
5
+ prerelease:
6
+ platform: ruby
7
+ authors:
8
+ - Benedikt Deicke
9
+ autorequire:
10
+ bindir: bin
11
+ cert_chain: []
12
+ date: 2012-01-31 00:00:00.000000000 Z
13
+ dependencies:
14
+ - !ruby/object:Gem::Dependency
15
+ name: mongoid
16
+ requirement: &2151887880 !ruby/object:Gem::Requirement
17
+ none: false
18
+ requirements:
19
+ - - ~>
20
+ - !ruby/object:Gem::Version
21
+ version: '2.0'
22
+ type: :runtime
23
+ prerelease: false
24
+ version_requirements: *2151887880
25
+ - !ruby/object:Gem::Dependency
26
+ name: rake
27
+ requirement: &2151903180 !ruby/object:Gem::Requirement
28
+ none: false
29
+ requirements:
30
+ - - ! '>='
31
+ - !ruby/object:Gem::Version
32
+ version: 0.8.7
33
+ type: :development
34
+ prerelease: false
35
+ version_requirements: *2151903180
36
+ - !ruby/object:Gem::Dependency
37
+ name: rspec
38
+ requirement: &2151902360 !ruby/object:Gem::Requirement
39
+ none: false
40
+ requirements:
41
+ - - ~>
42
+ - !ruby/object:Gem::Version
43
+ version: '2.3'
44
+ type: :development
45
+ prerelease: false
46
+ version_requirements: *2151902360
47
+ - !ruby/object:Gem::Dependency
48
+ name: rdoc
49
+ requirement: &2151901680 !ruby/object:Gem::Requirement
50
+ none: false
51
+ requirements:
52
+ - - ~>
53
+ - !ruby/object:Gem::Version
54
+ version: '2.4'
55
+ type: :development
56
+ prerelease: false
57
+ version_requirements: *2151901680
58
+ - !ruby/object:Gem::Dependency
59
+ name: autotest
60
+ requirement: &2151900880 !ruby/object:Gem::Requirement
61
+ none: false
62
+ requirements:
63
+ - - ! '>='
64
+ - !ruby/object:Gem::Version
65
+ version: 4.3.2
66
+ type: :development
67
+ prerelease: false
68
+ version_requirements: *2151900880
69
+ description: A tree structure for Mongoid documents using the materialized path pattern
70
+ email:
71
+ - benedikt@synatic.net
72
+ executables: []
73
+ extensions: []
74
+ extra_rdoc_files:
75
+ - README.rdoc
76
+ - LICENSE
77
+ files:
78
+ - lib/mongoid/tree/ordering.rb
79
+ - lib/mongoid/tree/traversal.rb
80
+ - lib/mongoid/tree.rb
81
+ - spec/mongoid/tree/ordering_spec.rb
82
+ - spec/mongoid/tree/traversal_spec.rb
83
+ - spec/mongoid/tree_spec.rb
84
+ - spec/spec_helper.rb
85
+ - spec/support/macros/tree_macros.rb
86
+ - spec/support/models/node.rb
87
+ - LICENSE
88
+ - README.rdoc
89
+ - Rakefile
90
+ - Gemfile
91
+ - .rspec
92
+ homepage: https://github.com/benedikt/mongoid-tree
93
+ licenses: []
94
+ post_install_message:
95
+ rdoc_options:
96
+ - --main
97
+ - README.rdoc
98
+ - --charset=UTF-8
99
+ require_paths:
100
+ - lib
101
+ required_ruby_version: !ruby/object:Gem::Requirement
102
+ none: false
103
+ requirements:
104
+ - - ! '>='
105
+ - !ruby/object:Gem::Version
106
+ version: '0'
107
+ segments:
108
+ - 0
109
+ hash: 1779933615643382818
110
+ required_rubygems_version: !ruby/object:Gem::Requirement
111
+ none: false
112
+ requirements:
113
+ - - ! '>='
114
+ - !ruby/object:Gem::Version
115
+ version: '0'
116
+ segments:
117
+ - 0
118
+ hash: 1779933615643382818
119
+ requirements: []
120
+ rubyforge_project:
121
+ rubygems_version: 1.8.10
122
+ signing_key:
123
+ specification_version: 3
124
+ summary: A tree structure for Mongoid documents
125
+ test_files: []