Class: ReadXls::Evaluator::Formula

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

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(builder, result_test, result_bytes) ⇒ Formula

Returns a new instance of Formula.



6
7
8
9
10
# 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

Instance Attribute Details

#builderObject

Returns the value of attribute builder.



4
5
6
# File 'lib/read_xls/evaluator/formula.rb', line 4

def builder
  @builder
end

#result_bytesObject

Returns the value of attribute result_bytes.



4
5
6
# File 'lib/read_xls/evaluator/formula.rb', line 4

def result_bytes
  @result_bytes
end

#result_numberObject

Returns the value of attribute result_number.



4
5
6
# File 'lib/read_xls/evaluator/formula.rb', line 4

def result_number
  @result_number
end

Instance Method Details

#evaluateObject



12
13
14
15
16
17
18
19
20
21
22
# 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?Boolean

Returns:



24
25
26
# File 'lib/read_xls/evaluator/formula.rb', line 24

def result_number?
  result_number
end

#result_string?Boolean

Returns:



28
29
30
# File 'lib/read_xls/evaluator/formula.rb', line 28

def result_string?
  !result_number? && result_bytes.byteslice(0, 1).unpack("C").first == 0
end