tree_hierarchy 2.0.0 → 2.1.0

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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 86e5d35dc28014de283c41a8a4d1e83fba1e859a
4
- data.tar.gz: 51dd70bd650b5e10e6dc0f7f0f7dbeaed923db08
3
+ metadata.gz: cd96e4fd227c305f65ee064919210b1b90578a4e
4
+ data.tar.gz: e06bf8a983ee4c7d4306f306284f5391c373e323
5
5
  SHA512:
6
- metadata.gz: 3a8a5553c660f79e8b53ab1bb8735d0b27e81a62a548766c4128b42ee07e5c49b896796bf30f469eab062c3ac6a280a3d21e7966380a2ad359f0a52cc87b07b5
7
- data.tar.gz: be6fec718b992fccc79a97031b7325de17468c28c837ffc1dc62bf002b1fa011bd27d413574378ae86f808cc57412908b12cf90569eabeedbf68ed1d4838bf35
6
+ metadata.gz: 81ea22e4fdb6b6d54f90463557e51f428db8ebf928578f0009ec9f3e91e401411bc56130092b2e5f67635e671290a2633f406362eb0417e0f5c80917b50c07d9
7
+ data.tar.gz: 8f45cdabd4c66953ef4608e3bf1d601848dd4d01bd91c15632ff8748d0ec845a0f0609e3cfa3d90a45d3b5bb4c94bbe78f75a278b8ac0d433a960fc00e567cd0
@@ -1,7 +1,7 @@
1
1
  module SupportMethod
2
2
 
3
3
  def group_result_set(result_set)
4
- result_set.group_by{|x| x.parent_id ? x.parent_id.to_i : x.parent_id }
4
+ result_set.group_by{|x| nil_check(x.parent_id) }
5
5
  end
6
6
 
7
7
  def total_calc(result_group,field_set)
@@ -19,4 +19,9 @@ module SupportMethod
19
19
  def compare(arg1,arg2)
20
20
  arg1 > arg2
21
21
  end
22
+
23
+ def nil_check(value)
24
+ value ? value.to_i : value
25
+ end
26
+
22
27
  end
@@ -4,63 +4,73 @@ module AddedHierarchyLevel
4
4
  @@linear = []
5
5
 
6
6
  def added_hierarchy(result_set,args,depth = 0)
7
- @@result_group = group_result_set(result_set)
8
- parent_child_add(args)
9
- level_check(depth) ? self.tree_structure(result_set,@@result_group) : self.tree_structure_depth(result_set,@@result_group,depth.to_i)
7
+ added_hierarchy_calc(result_set,args,depth,'tree_structure')
10
8
  end
11
9
 
12
10
  def added_hierarchy_level(result_set,args,depth = 0)
13
- @@result_group = group_result_set(result_set)
14
- parent_child_add(args)
15
- level_check(depth) ? self.tree_structure_level(result_set,@@result_group) : self.tree_structure_depth_level(result_set,@@result_group,depth.to_i)
11
+ added_hierarchy_calc(result_set,args,depth,'tree_structure_level')
16
12
  end
17
-
13
+
14
+ def added_hierarchy_calc(result_set,args,depth,type)
15
+ initial = initial_load(result_set,args)
16
+ method_detection(result_set,depth,type,self,@@result_group)
17
+ end
18
+
18
19
  def added_hchildren(result_set,args)
19
- @@result_group = group_result_set(result_set)
20
- parent_child_add(args)
20
+ children_group(result_set,args)
21
21
  self.hchildren_structure(result_set,@@result_group)
22
22
  end
23
23
 
24
24
  def added_hchildren_ids(result_set,args)
25
- @@result_group = group_result_set(result_set)
26
- parent_child_add(args)
25
+ children_group(result_set,args)
27
26
  self.hchildren_structure_ids(result_set,@@result_group)
28
27
  end
29
28
 
30
29
  def linear_level(result_set,depth = 0)
31
- @@linear = []
32
- result_group = group_result_set(result_set)
33
- level_check(depth) ? self.linear_structure_level(result_set,result_group) : self.linear_structure_depth_level(result_set,result_group,depth.to_i)
34
- return @@linear
30
+ linear_calc(result_set,depth,'linear_structure_level')
35
31
  end
36
32
 
37
33
  def linear(result_set,depth = 0)
38
- @@linear = []
39
- result_group = group_result_set(result_set)
40
- level_check(depth) ? self.linear_structure(result_set,result_group) : self.linear_structure_depth(result_set,result_group,depth.to_i)
41
- return @@linear
34
+ linear_calc(result_set,depth,'linear_structure')
42
35
  end
43
36
 
44
- def added_linear(result_set,args,depth = 0)
45
- @@linear = []
46
- @@result_group = group_result_set(result_set)
47
- parent_child_add(args)
48
- level_check(depth) ? self.linear_structure(result_set,@@result_group) : self.linear_structure_depth(result_set,@@result_group,depth.to_i)
37
+ def linear_calc(result_set,depth,type)
38
+ result_group = linear_load(result_set)
39
+ method_detection(result_set,depth,type,self,result_group)
49
40
  return @@linear
50
41
  end
42
+
43
+ def added_linear(result_set,args,depth = 0)
44
+ added_calc(result_set,args,depth,'linear_structure')
45
+ end
51
46
 
52
47
  def added_linear_level(result_set,args,depth = 0)
53
- @@linear = []
54
- @@result_group = group_result_set(result_set)
55
- parent_child_add(args)
56
- level_check(depth) ? self.linear_structure_level(result_set,@@result_group) : self.linear_structure_depth_level(result_set,@@result_group,depth.to_i)
48
+ added_calc(result_set,args,depth,'linear_structure_level')
49
+ end
50
+
51
+ def added_calc(result_set,args,depth,type)
52
+ initial = added_linear_load(result_set,args)
53
+ method_detection(result_set,depth,type,initial,@@result_group)
57
54
  return @@linear
55
+ end
56
+
57
+ def method_detection(result_set,depth,type,initial,result_group)
58
+ level_check(depth) ? initial.send(type,result_set,result_group) : initial.send(type+'_depth',result_set,@@result_group,depth.to_i)
59
+ end
60
+
61
+ def added_linear_load(result_set,args)
62
+ @@linear = initialise_array()
63
+ initial_load(result_set,args)
58
64
  end
59
65
 
66
+ def initialise_array()
67
+ []
68
+ end
69
+
60
70
  def parent_child_add(field_set)
61
71
  unless presence_check(@@result_group[self.id])
62
72
  @@result_group[self.id].map{|x| x.parent_child_add(field_set)}
63
- @@result_group[self.parent_id].each do|x|
73
+ @@result_group[nil_check(self.parent_id)].each do|x|
64
74
  next unless x.id == self.id
65
75
  for i in 0..field_set.length-1
66
76
  x[field_set[i]] = total_calc(@@result_group[self.id],field_set[i])
@@ -70,16 +80,14 @@ module AddedHierarchyLevel
70
80
  end
71
81
 
72
82
  def linear_structure_level(result_set,result_group,increment = 1)
73
- self.attributes.merge(:level => increment)
74
- @@linear << self
83
+ @@linear << self.attributes.merge(:level => increment)
75
84
  result_group[self.id].map{|x| x.linear_structure_level(result_set,result_group,increment+1)} unless presence_check(result_group[self.id])
76
85
  end
77
86
 
78
- def linear_structure_depth_level(result_set,result_group,depth,increment = 1)
87
+ def linear_structure_level_depth(result_set,result_group,depth,increment = 1)
79
88
  unless compare(increment,depth)
80
- self.attributes.merge({:level => increment})
81
- @@linear << self
82
- result_group[self.id].map{|x| x.linear_structure_depth(result_set,result_group,depth,increment + 1)} unless presence_check(result_group[self.id])
89
+ @@linear << self.attributes.merge({:level => increment})
90
+ linear_method_detection(result_set,result_group,depth,increment,'linear_structure_level_depth')
83
91
  end
84
92
  end
85
93
 
@@ -91,8 +99,39 @@ module AddedHierarchyLevel
91
99
  def linear_structure_depth(result_set,result_group,depth,increment = 1)
92
100
  unless compare(increment,depth)
93
101
  @@linear << self
94
- result_group[self.id].map{|x| x.linear_structure_depth(result_set,result_group,depth,increment + 1)} unless presence_check(result_group[self.id])
102
+ linear_method_detection(result_set,result_group,depth,increment,'linear_structure_depth')
95
103
  end
96
104
  end
97
105
 
106
+ def linear_method_detection(result_set,result_group,depth,increment,type)
107
+ result_group[self.id].map{|x| x.send(type,result_set,result_group,depth,increment + 1)} unless presence_check(result_group[self.id])
108
+ end
109
+
110
+ private
111
+
112
+
113
+ def initial_load(result_set,args)
114
+ children_group(result_set,args)
115
+ @@result_group[nil_check(self.parent_id)].select{|x| x.id == self.id}.first
116
+ end
117
+
118
+ def children_group(result_set,args)
119
+ @@result_group = group_result_set(result_set)
120
+ parent_child_add(args)
121
+ end
122
+
123
+ def linear_load(result_set)
124
+ @@linear = initialise_array()
125
+ group_result_set(result_set)
126
+ end
127
+
128
+ def added_linear_load(result_set,args)
129
+ @@linear = initialise_array()
130
+ initial_load(result_set,args)
131
+ end
132
+
133
+ def initialise_array()
134
+ []
135
+ end
136
+
98
137
  end
@@ -2,15 +2,15 @@ module HierarchyWithLevel
2
2
 
3
3
  def hierarchy_level(result_set,depth = 0)
4
4
  result_group = group_result_set(result_set)
5
- level_check(depth) ? self.tree_structure_level(result_set,result_group) : self.tree_structure_depth_level(result_set,result_group,depth.to_i)
5
+ level_check(depth) ? self.tree_structure_level(result_set,result_group) : self.tree_structure_level_depth(result_set,result_group,depth.to_i)
6
6
  end
7
7
 
8
8
  def tree_structure_level(result_set,result_group,increment = 1)
9
9
  presence_check(result_group[self.id]) ? self.attributes.merge({:level => increment}) : self.attributes.merge({:level => increment, :children => result_group[self.id].map{|x| x.tree_structure_level(result_set,result_group,increment + 1)}})
10
10
  end
11
11
 
12
- def tree_structure_depth_level(result_set,result_group,depth,increment = 1)
13
- presence_check(result_group[self.id]) ? self.attributes.merge({:level => increment}) : self.attributes.merge({:level => increment, :children => result_group[self.id].map{|x| x.tree_structure_depth_level(result_set,result_group,depth,increment + 1)}}) unless compare(increment,depth)
12
+ def tree_structure_level_depth(result_set,result_group,depth,increment = 1)
13
+ presence_check(result_group[self.id]) ? self.attributes.merge({:level => increment}) : self.attributes.merge({:level => increment, :children => result_group[self.id].map{|x| x.tree_structure_level_depth(result_set,result_group,depth,increment + 1)}}) unless compare(increment,depth)
14
14
  end
15
15
 
16
16
  def hchildren(result_set)
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: tree_hierarchy
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.0.0
4
+ version: 2.1.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Dheenadhayalan
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-04-15 00:00:00.000000000 Z
11
+ date: 2014-05-02 00:00:00.000000000 Z
12
12
  dependencies: []
13
13
  description: " \n Tree_hierarchy allows to form a tree structure based on parent-child
14
14
  relationship \n with simple and fast computation for large records. Additional