Class: JsonapiCompliable::Stats::DSL
- Inherits:
-
Object
- Object
- JsonapiCompliable::Stats::DSL
show all
- Defined in:
- lib/jsonapi_compliable/stats/dsl.rb
Instance Attribute Summary collapse
Instance Method Summary
collapse
Constructor Details
#initialize(adapter, config) ⇒ DSL
Returns a new instance of DSL.
6
7
8
9
10
11
12
13
|
# File 'lib/jsonapi_compliable/stats/dsl.rb', line 6
def initialize(adapter, config)
config = { config => [] } if config.is_a?(Symbol)
@adapter = adapter
@calculations = {}
@name = config.keys.first
Array(config.values.first).each { |c| send(:"#{c}!") }
end
|
Dynamic Method Handling
This class handles dynamic methods through the method_missing method
#method_missing(meth, *args, &blk) ⇒ Object
15
16
17
|
# File 'lib/jsonapi_compliable/stats/dsl.rb', line 15
def method_missing(meth, *args, &blk)
@calculations[meth] = blk
end
|
Instance Attribute Details
#calculations ⇒ Object
Returns the value of attribute calculations.
4
5
6
|
# File 'lib/jsonapi_compliable/stats/dsl.rb', line 4
def calculations
@calculations
end
|
#name ⇒ Object
Returns the value of attribute name.
4
5
6
|
# File 'lib/jsonapi_compliable/stats/dsl.rb', line 4
def name
@name
end
|
Instance Method Details
#average! ⇒ Object
32
33
34
|
# File 'lib/jsonapi_compliable/stats/dsl.rb', line 32
def average!
@calculations[:average] = @adapter.method(:average)
end
|
#calculation(name) ⇒ Object
19
20
21
22
|
# File 'lib/jsonapi_compliable/stats/dsl.rb', line 19
def calculation(name)
callable = @calculations[name] || @calculations[name.to_sym]
callable || raise(Errors::StatNotFound.new(@name, name))
end
|
#count! ⇒ Object
24
25
26
|
# File 'lib/jsonapi_compliable/stats/dsl.rb', line 24
def count!
@calculations[:count] = @adapter.method(:count)
end
|
#maximum! ⇒ Object
36
37
38
|
# File 'lib/jsonapi_compliable/stats/dsl.rb', line 36
def maximum!
@calculations[:maximum] = @adapter.method(:maximum)
end
|
#minimum! ⇒ Object
40
41
42
|
# File 'lib/jsonapi_compliable/stats/dsl.rb', line 40
def minimum!
@calculations[:minimum] = @adapter.method(:minimum)
end
|
#sum! ⇒ Object
28
29
30
|
# File 'lib/jsonapi_compliable/stats/dsl.rb', line 28
def sum!
@calculations[:sum] = @adapter.method(:sum)
end
|