Class: ReadXls::Evaluator::FormatNumber

Inherits:
Object
  • Object
show all
Defined in:
lib/read_xls/evaluator/format_number.rb

Constant Summary collapse

SECONDS_IN_DAY =
60 * 60 * 24

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(number, extended_format) ⇒ FormatNumber

Returns a new instance of FormatNumber.



8
9
10
11
# File 'lib/read_xls/evaluator/format_number.rb', line 8

def initialize(number, extended_format)
  self.number          = BigDecimal.new(number.to_s)
  self.extended_format = extended_format
end

Instance Attribute Details

#extended_formatObject

Returns the value of attribute extended_format.



6
7
8
# File 'lib/read_xls/evaluator/format_number.rb', line 6

def extended_format
  @extended_format
end

#numberObject

Returns the value of attribute number.



6
7
8
# File 'lib/read_xls/evaluator/format_number.rb', line 6

def number
  @number
end

Instance Method Details

#evaluateObject



13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
# File 'lib/read_xls/evaluator/format_number.rb', line 13

def evaluate
  return number unless extended_format

  case extended_format.format_type
    when :date
      days_since_datemode = number.to_i
      inner_day_fraction  = number.frac

      date = build_date(days_since_datemode)

      if inner_day_fraction == 0
        date
      else
        build_time(date, inner_day_fraction)
      end
    else
      number
  end
end