Class: MeasureScaler::Measure

Inherits:
Object
  • Object
show all
Defined in:
lib/measure_scaler/measure.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(qty, unit, precision = nil) ⇒ Measure

Measure.new(12500.34, “MWh”)


6
7
8
9
# File 'lib/measure_scaler/measure.rb', line 6

def initialize(qty, unit, precision=nil)
  @qty, @precision = qty, precision
  @unit            = unit.is_a?(Unit) ? unit : Unit.new(unit)
end

Instance Attribute Details

#precisionObject (readonly)

Returns the value of attribute precision.


3
4
5
# File 'lib/measure_scaler/measure.rb', line 3

def precision
  @precision
end

#qtyObject (readonly)

Returns the value of attribute qty.


3
4
5
# File 'lib/measure_scaler/measure.rb', line 3

def qty
  @qty
end

#unitObject (readonly)

Returns the value of attribute unit.


3
4
5
# File 'lib/measure_scaler/measure.rb', line 3

def unit
  @unit
end

Instance Method Details

#scaleObject


11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
# File 'lib/measure_scaler/measure.rb', line 11

def scale
  # TODO: gestisci unità non riconosciute (non valide)


  if @unit.pattern_found?
    ord = @qty.scaling_proposal # multipli di 3
    ord, new_unit = @unit.scale(ord)
    qty = @qty.scale(ord)
    qty = precisize(qty) if @precision
    Measure.new(qty, new_unit, @precision)
  else
    @qty = precisize(@qty) if @precision
    self
  end
end

#to_sObject


27
28
29
# File 'lib/measure_scaler/measure.rb', line 27

def to_s
  "#{@qty} #{@unit}"
end