class ReplaceCellAddressesWithReferencesAst
Attributes
count_replaced[RW]
replacement_made[RW]
Public Class Methods
new()
click to toggle source
# File src/simplify/replace_cell_addresses_with_references.rb, line 6 def initialize @count_replaced = 0 end
Public Instance Methods
function(ast)
click to toggle source
# File src/simplify/replace_cell_addresses_with_references.rb, line 23 def function(ast) _, name, info, ref = *ast return unless name == :CELL return unless info.first == :string return unless info.last.downcase == "address" replace_with_reference(ast, ref) end
map(ast)
click to toggle source
# File src/simplify/replace_cell_addresses_with_references.rb, line 16 def map(ast) return ast unless ast.is_a?(Array) function(ast) if ast[0] == :function ast.each { |a| map(a) } ast end
replace(ast)
click to toggle source
# File src/simplify/replace_cell_addresses_with_references.rb, line 10 def replace(ast) @replacement_made = false map(ast) @replacement_made end
replace_with_reference(ast, ref)
click to toggle source
# File src/simplify/replace_cell_addresses_with_references.rb, line 31 def replace_with_reference(ast, ref) case ref.first when :cell ast.replace([:cell, Reference.for(ref.last).unfix]) when :sheet_reference replace_with_reference(ref.last, ref.last) ast.replace(ref) when :area ast.replace([:cell, Reference.for(ref[1]).unfix]) else ast.replace([:error, "#VALUE!"]) end end