locomotive-mongoid-tree 0.6.2

Sign up to get free protection for your applications and to get access to all the features.
@@ -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: []