class ReadXls::Evaluator::Formula

Attributes

builder[RW]
result_bytes[RW]
result_number[RW]

Public Class Methods

new(builder, result_test, result_bytes) click to toggle source
# File lib/read_xls/evaluator/formula.rb, line 6
def initialize(builder, result_test, result_bytes)
  self.builder       = builder
  self.result_number = result_test != 0xFFFF
  self.result_bytes  = result_bytes
end

Public Instance Methods

evaluate() click to toggle source
# File lib/read_xls/evaluator/formula.rb, line 12
def evaluate
  if result_number?
    result_bytes.unpack("E").first
  elsif result_string?
    builder.next_formula_string!
  elsif result_boolerr?
    raise NotImplementedError
  else
    raise NotImplementedError, "can't figure out what type of formula this is"
  end
end
result_number?() click to toggle source
# File lib/read_xls/evaluator/formula.rb, line 24
def result_number?
  result_number
end
result_string?() click to toggle source
# File lib/read_xls/evaluator/formula.rb, line 28
def result_string?
  !result_number? && result_bytes.byteslice(0, 1).unpack("C").first == 0
end