Class: Summarizer::Base::AddItUp

Inherits:
Object
  • Object
show all
Defined in:
lib/summarizer/add_it_up.rb

Instance Method Summary collapse

Constructor Details

#initialize(tied_to_class) ⇒ AddItUp

Returns a new instance of AddItUp.



6
7
8
9
10
11
12
13
14
15
16
# File 'lib/summarizer/add_it_up.rb', line 6

def initialize(tied_to_class)
  # get options from referring class
  options = tied_to_class.read_inheritable_attribute 'options'
  # initialize attributes
  @attributes = {}
  (tied_to_class.read_inheritable_attribute('attributes') || []).each{|a| @attributes[a] = 0.0}
  @digits = options[:digits] || 2
  @digits_factor = 1.0
  @digits.times{ @digits_factor *= 10 }
  @empty = true
end

Dynamic Method Handling

This class handles dynamic methods through the method_missing method

#method_missing(symbol, *args) ⇒ Object



37
38
39
40
# File 'lib/summarizer/add_it_up.rb', line 37

def method_missing(symbol, *args)
  return @attributes[symbol] if @attributes.has_key? symbol
  super symbol, *args
end

Instance Method Details

#add(obj) ⇒ Object

Add attribute values of referring class instance



19
20
21
22
# File 'lib/summarizer/add_it_up.rb', line 19

def add(obj)
  @attributes.each{|key, value| @attributes[key] = value + (obj.send(key) * @digits_factor).round / @digits_factor}
  @empty = false
end

#empty?Boolean

Returns:

  • (Boolean)


29
30
31
# File 'lib/summarizer/add_it_up.rb', line 29

def empty?
  @empty
end

#resetObject



24
25
26
27
# File 'lib/summarizer/add_it_up.rb', line 24

def reset
  @attributes.each_key{|key| @attributes[key] = 0.0}
  @empty = true
end

#respond_to?(symbol, include_priv = false) ⇒ Boolean

Returns:

  • (Boolean)


42
43
44
45
# File 'lib/summarizer/add_it_up.rb', line 42

def respond_to?(symbol, include_priv = false)
  return true if @attributes.has_key? symbol
  super symbol, include_priv
end

#staticObject



33
34
35
# File 'lib/summarizer/add_it_up.rb', line 33

def static
  Static.new(@attributes)
end