class MapColumnAndRowRangeAst

Attributes

default_worksheet_name[RW]
worksheet_dimensions[RW]

Public Class Methods

new(default_worksheet_name,worksheet_dimensions) click to toggle source
# File src/rewrite/rewrite_whole_row_column_references_to_areas.rb, line 34
def initialize(default_worksheet_name,worksheet_dimensions)
  @default_worksheet_name, @worksheet_dimensions = default_worksheet_name, worksheet_dimensions
  @worksheet_names = []
end

Public Instance Methods

column_range(ast) click to toggle source

Of the form [:column_range, start, finish]

# File src/rewrite/rewrite_whole_row_column_references_to_areas.rb, line 63
def column_range(ast)
  worksheet = @worksheet_names.last || @default_worksheet_name
  ast.replace([:area,*worksheet_dimensions[worksheet].map_column(ast[1],ast[2])])
end
map(ast) click to toggle source
# File src/rewrite/rewrite_whole_row_column_references_to_areas.rb, line 39
def map(ast)
  return ast unless ast.is_a?(Array)
  case ast[0]
  when :sheet_reference; sheet_reference(ast)
  when :row_range; row_range(ast)
  when :column_range; column_range(ast)
  end
  ast.each {|e| map(e)}
end
row_range(ast) click to toggle source

Of the form [:row_range, start, finish]

# File src/rewrite/rewrite_whole_row_column_references_to_areas.rb, line 57
def row_range(ast)
  worksheet = @worksheet_names.last || @default_worksheet_name
  ast.replace([:area,*worksheet_dimensions[worksheet].map_row(ast[1],ast[2])])
end
sheet_reference(ast) click to toggle source

Of the form [:sheet_reference, sheet_name, reference]

# File src/rewrite/rewrite_whole_row_column_references_to_areas.rb, line 50
def sheet_reference(ast)
  @worksheet_names.push(ast[1].to_sym) #FIXME: Remove once all symbols
  map(ast[2])
  @worksheet_names.pop
end