class Extract::Parser

Attributes

sheet[RW]
str[RW]

Public Instance Methods

deps() click to toggle source
# File lib/extract/parser.rb, line 59
def deps
  res = result
  res.root_sheet = sheet
  #raise res.meat.inspect unless res.meat.respond_to?(:deps)
  raise "can't parse #{str}" unless res
  res.meat.deps.flatten.uniq.map do |c|
    if c =~ /"/
      nil
    else
      c.gsub("$","")
    end
  end.select { |x| x }.sort.uniq
end
excel_value() click to toggle source
# File lib/extract/parser.rb, line 52
def excel_value
  res = result
  raise "can't parse #{str}" unless res
  res.root_sheet = sheet
  res.meat.excel_value
end
result() click to toggle source
# File lib/extract/parser.rb, line 38
def result
  p = FormulaParser.new
  res = p.parse(str.gsub(" ",""))
  if !res
    strs = []
    strs << p.failure_reason
    strs << p.failure_line
    strs << p.failure_column
    strs << "no result for #{str}"
    raise strs.join("\n")
  end
  res
end