acts_as_many_trees 0.0.7 → 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: e2620efb1d266d8fe57de7129309644e9864ea88
4
- data.tar.gz: d7ae058f539b0c00f30417ca532050faf35e9f61
3
+ metadata.gz: efa129f338ec6582601314bec7c0c121eed62ea1
4
+ data.tar.gz: e424e02dd6da7331ae1453c622be5b52ccb2c975
5
5
  SHA512:
6
- metadata.gz: e6837514c1ccbcb8bafdd2a3ba2c165de3e3d53ccbef3ecf3d47d414a770cd42c9520f041da4196b0ac96cce1d7217ffd929a8dc04cce8081c85037a83d701ac
7
- data.tar.gz: f27e589126d637662cf2e6bbb3a80595cd4d95e83791a8593493f4fc33322aa271f1b629fc3093039edf5dfed9ce454f03fe512f857671401ab5fff199e13603
6
+ metadata.gz: f4589e5f43d8d3897938598b08cfa217f300dd5a9dc1c59b843ff7490bd416e6be668cc6cfb1f2f0bdc428af9cbc373b715b873d21ae2fca80b2430763542c93
7
+ data.tar.gz: 0b5723cb07c17feccc683a08dbe531c433fa5aabfa1ca945231bfe4023a952fd0446a260e7b76107dec214c2bc5966b2893f590cc24c1ff6e9023b63737c7937
@@ -20,6 +20,11 @@ module ActsAsManyTrees
20
20
  def hierarchy_table_name
21
21
  hierarchy_class.table_name
22
22
  end
23
+
24
+ def default_tree_name
25
+ ''
26
+ end
27
+
23
28
  end
24
29
  module InstanceMethods
25
30
  extend ActiveSupport::Concern
@@ -55,9 +60,9 @@ module ActsAsManyTrees
55
60
  :source=>:item_siblings
56
61
  }
57
62
 
58
- scope :roots , ->(hierarchy=''){
63
+ scope :roots , ->(tree_name=self.default_tree_name){
59
64
  on = Arel::Nodes::On.new(Arel::Nodes::Equality.new(arel_table[:id],hierarchy_class.arel_table[:descendant_id])
60
- .and(hierarchy_class.arel_table[:hierarchy_scope].eq(hierarchy))
65
+ .and(hierarchy_class.arel_table[:hierarchy_scope].eq(tree_name))
61
66
  .and(hierarchy_class.arel_table[:generation].not_eq(0))
62
67
  )
63
68
  outer_join = Arel::Nodes::OuterJoin.new(hierarchy_class.arel_table,on)
@@ -66,47 +71,52 @@ module ActsAsManyTrees
66
71
  scope :not_this,->(this_id) { where.not(id: this_id)}
67
72
  end
68
73
  delegate :hierarchy_class, to: :class
74
+ #can be over-ridden in the instance
75
+ def default_tree_name
76
+ ''
77
+ end
78
+
69
79
  def parent=(inpt_parent)
70
80
  if inpt_parent.is_a?(Hash)
71
81
  new_parent=inpt_parent[:new_parent]
72
82
  after_node=inpt_parent[:after_node]
73
83
  before_node=inpt_parent[:before_node]
74
- hierarchy_scope=inpt_parent[:hierarchy_scope] || ''
84
+ tree_name=inpt_parent[:tree_name] || ''
75
85
  else
76
86
  new_parent=inpt_parent
77
87
  after_node=inpt_parent.children.last unless inpt_parent.nil?
78
88
  before_node=inpt_parent.next_sibling unless inpt_parent.nil?
79
- hierarchy_scope = ''
89
+ tree_name = inpt_parent ? inpt_parent.default_tree_name : self.default_tree_name
80
90
  end
81
- hierarchy_class.set_parent_of(self,new_parent,hierarchy_scope,after_node,before_node)
91
+ hierarchy_class.set_parent_of(self,new_parent,tree_name,after_node,before_node)
82
92
  end
83
93
 
84
- def set_parent(new_parent,hierarchy_scope='')
85
- hierarchy_class.set_parent_of(self,new_parent,hierarchy_scope)
94
+ def set_parent(new_parent,tree_name=self.default_tree_name)
95
+ hierarchy_class.set_parent_of(self,new_parent,tree_name)
86
96
  end
87
97
 
88
- def add_child(new_child,hierarchy_scope='')
89
- hierarchy_class.set_parent_of(new_child,self,hierarchy_scope)
98
+ def add_child(new_child,tree_name=self.default_tree_name)
99
+ hierarchy_class.set_parent_of(new_child,self,tree_name)
90
100
  end
91
101
 
92
- def parent(hierarchy_scope='')
93
- ancestors(hierarchy_scope).where('generation=1').first
102
+ def parent(tree_name=self.default_tree_name)
103
+ ancestors(tree_name).where('generation=1').first
94
104
  end
95
105
 
96
- def children(hierarchy_scope='')
97
- descendants(hierarchy_scope).where('generation=1')
106
+ def children(tree_name=self.default_tree_name)
107
+ descendants(tree_name).where('generation=1')
98
108
  end
99
109
 
100
- def self_and_ancestors(hierarchy='')
101
- unscoped_ancestors.merge(hierarchy_class.scope_hierarchy(hierarchy))
110
+ def self_and_ancestors(tree_name=self.default_tree_name)
111
+ unscoped_ancestors.merge(hierarchy_class.scope_hierarchy(tree_name))
102
112
  end
103
113
 
104
- def ancestors(hierarchy='')
105
- self_and_ancestors(hierarchy).not_this(self.id)
114
+ def ancestors(tree_name=self.default_tree_name)
115
+ self_and_ancestors(tree_name).not_this(self.id)
106
116
  end
107
117
 
108
- def self_and_descendants(hierarchy='')
109
- unscoped_descendants.merge(hierarchy_class.scope_hierarchy(hierarchy))
118
+ def self_and_descendants(tree_name=self.default_tree_name)
119
+ unscoped_descendants.merge(hierarchy_class.scope_hierarchy(tree_name))
110
120
  end
111
121
 
112
122
  def siblings
@@ -121,12 +131,12 @@ module ActsAsManyTrees
121
131
  siblings_after.first
122
132
  end
123
133
 
124
- def descendants(hierarchy='')
125
- self_and_descendants(hierarchy).not_this(self.id)
134
+ def descendants(tree_name=self.default_tree_name)
135
+ self_and_descendants(tree_name).not_this(self.id)
126
136
  end
127
137
 
128
- def position(hierarchy='')
129
- unscoped_ancestor_links.where(ancestor_id: id,hierarchy_scope: hierarchy).first.position
138
+ def position(tree_name=self.default_tree_name)
139
+ unscoped_ancestor_links.where(ancestor_id: id,hierarchy_scope: tree_name).first.position
130
140
  end
131
141
  end
132
142
  end
@@ -1,3 +1,3 @@
1
1
  module ActsAsManyTrees
2
- VERSION = "0.0.7"
2
+ VERSION = "0.1.0"
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: acts_as_many_trees
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.7
4
+ version: 0.1.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - John Small
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-04-05 00:00:00.000000000 Z
11
+ date: 2015-04-12 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rails