Class: Namo::Collection
- Inherits:
-
Namo
- Object
- Namo
- Namo::Collection
show all
- Defined in:
- lib/Namo/Collection.rb
Constant Summary
Constants inherited
from Namo
VERSION
Instance Attribute Summary collapse
Attributes inherited from Namo
#data, #formulae, #name
Instance Method Summary
collapse
Methods inherited from Namo
#&, #*, #**, #+, #-, #/, #<, #<=, #==, #===, #>, #>=, #[], #[]=, #^, #coordinates, #data_dimensions, #derived_dimensions, #dimensions, #eql?, #hash, #to_a, #to_h, #values, #|
Methods included from Enumerable
#drop, #drop_while, #each, #first, #last, #partition, #reject, #select, #sort_by, #take, #take_while, #uniq
Instance Attribute Details
#members ⇒ Object
Returns the value of attribute members.
6
7
8
|
# File 'lib/Namo/Collection.rb', line 6
def members
@members
end
|
Instance Method Details
#<<(*members) ⇒ Object
8
9
10
11
12
13
14
15
|
# File 'lib/Namo/Collection.rb', line 8
def <<(*members)
members.flatten.each do |member|
@members.reject!{|existing| existing.name == member.name} unless member.name.nil?
@members << member
end
@data = detail.data
self
end
|
#as_detail(by = :member) ⇒ Object
40
41
42
43
|
# File 'lib/Namo/Collection.rb', line 40
def as_detail(by = :member)
@data = detail(by: by).data
self
end
|
#as_summary(dimension, by: :member, reducer: :sum) ⇒ Object
35
36
37
38
|
# File 'lib/Namo/Collection.rb', line 35
def as_summary(dimension, by: :member, reducer: :sum)
@data = summary(dimension, by: by, reducer: reducer).data
self
end
|
#detail(by: :member) ⇒ Object
28
29
30
31
32
33
|
# File 'lib/Namo/Collection.rb', line 28
def detail(by: :member)
rows = @members.flat_map do |member|
member.data.map{|row| row.key?(by) ? row : row.merge(by => member.name)}
end
Namo.new(rows)
end
|
#find(name) ⇒ Object
17
18
19
|
# File 'lib/Namo/Collection.rb', line 17
def find(name)
@members.find{|member| member.name == name} unless name.nil?
end
|
#summary(dimension, by: :member, reducer: :sum) ⇒ Object
21
22
23
24
25
26
|
# File 'lib/Namo/Collection.rb', line 21
def summary(dimension, by: :member, reducer: :sum)
rows = @members.map do |member|
{by => member.name, dimension => member.values(dimension).send(reducer)}
end
Namo.new(rows)
end
|