Class: TapeMeasure::Formatter

Inherits:
Object
  • Object
show all
Defined in:
lib/tape_measure/formatter.rb

Overview

Format numbers in mixed numbers

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(number = 0.0) ⇒ Formatter

Returns a new instance of Formatter.



6
7
8
9
10
11
12
13
14
15
16
17
18
19
# File 'lib/tape_measure/formatter.rb', line 6

def initialize(number = 0.0)
  @number     = number
  @unit_array = []
  @feet       = @number.div(12)
  @raw_inches = @number.remainder(12)
  @inches     = @raw_inches.to_i
  @fraction   = @raw_inches.remainder(1).to_r.rationalize(0.01)

  format_feet
  format_inches
  format_fraction

  @mixed_number = @unit_array.compact.join
end

Instance Attribute Details

#mixed_numberObject (readonly)

Returns the value of attribute mixed_number.



4
5
6
# File 'lib/tape_measure/formatter.rb', line 4

def mixed_number
  @mixed_number
end

Instance Method Details

#format_feetObject



21
22
23
# File 'lib/tape_measure/formatter.rb', line 21

def format_feet
  @unit_array << "#{@feet}'" if @feet > 0
end

#format_fractionObject



32
33
34
35
36
# File 'lib/tape_measure/formatter.rb', line 32

def format_fraction
  @unit_array << ' ' if @fraction > 0 && @inches > 0
  @unit_array << "#{@fraction}" if @fraction > 0
  @unit_array << "\"" if @raw_inches > 0
end

#format_inchesObject



25
26
27
28
29
30
# File 'lib/tape_measure/formatter.rb', line 25

def format_inches
  if @inches > 0
    @unit_array << ' ' if @feet > 0
    @unit_array << "#{@inches}"
  end
end