Class: Trifle::Stats::Series

Inherits:
Object
  • Object
show all
Includes:
Mixins::Packer
Defined in:
lib/trifle/stats/series.rb

Defined Under Namespace

Classes: Aggregator, Formatter, Transponder

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Methods included from Mixins::Packer

included

Constructor Details

#initialize(series) ⇒ Series

Returns a new instance of Series.



10
11
12
13
# File 'lib/trifle/stats/series.rb', line 10

def initialize(series)
  @series = series
  @series[:values] = self.class.normalize(@series[:values])
end

Instance Attribute Details

#seriesObject

Returns the value of attribute series.



8
9
10
# File 'lib/trifle/stats/series.rb', line 8

def series
  @series
end

Class Method Details

.register_aggregator(name, klass) ⇒ Object



25
26
27
28
29
# File 'lib/trifle/stats/series.rb', line 25

def self.register_aggregator(name, klass)
  Aggregator.define_method(name) do |params|
    klass.new.aggregate(series: @series.series, **params)
  end
end

.register_formatter(name, klass) ⇒ Object



41
42
43
44
45
# File 'lib/trifle/stats/series.rb', line 41

def self.register_formatter(name, klass)
  Formatter.define_method(name) do |params, &block|
    klass.new.format(series: @series.series, **params, &block)
  end
end

.register_transponder(name, klass) ⇒ Object



57
58
59
60
61
# File 'lib/trifle/stats/series.rb', line 57

def self.register_transponder(name, klass)
  Transponder.define_method(name) do |params|
    @series.series = klass.new.transpond(series: @series.series, **params)
  end
end

Instance Method Details

#aggregateObject



21
22
23
# File 'lib/trifle/stats/series.rb', line 21

def aggregate
  @aggregate ||= Aggregator.new(self)
end

#formatObject



37
38
39
# File 'lib/trifle/stats/series.rb', line 37

def format
  @format ||= Formatter.new(self)
end

#transpondObject



53
54
55
# File 'lib/trifle/stats/series.rb', line 53

def transpond
  @transpond ||= Transponder.new(self)
end