class MapNamedReferenceToCSetter

Attributes

cells_that_can_be_set_at_runtime[RW]
sheet_names[RW]

Public Class Methods

new() click to toggle source
# File src/compile/c/compile_named_reference_setters.rb, line 6
def initialize
  reset
end

Public Instance Methods

array(*rows) click to toggle source
# File src/compile/c/compile_named_reference_setters.rb, line 38
def array(*rows)
  counter = -1

  result = rows.map do |r|
    r.shift if r.first == :row
    r.map do |c| 
      counter += 1
      @new_value_name = "array[#{counter}]"
      map(c)
    end
  end.flatten.join("\n")
  
  @new_value_name = "newValue"
  array_code(result)
end
array_code(result) click to toggle source
# File src/compile/c/compile_named_reference_setters.rb, line 69
def array_code(result)
  "  ExcelValue *array = newValue.array;\n#{result}"
end
cell(reference) click to toggle source
# File src/compile/c/compile_named_reference_setters.rb, line 27
def cell(reference)
  Reference.for(reference).unfix.downcase.to_s
end
map(ast) click to toggle source
# File src/compile/c/compile_named_reference_setters.rb, line 14
def map(ast)
  if ast.is_a?(Array)
    operator = ast[0]
    if respond_to?(operator)
      send(operator,*ast[1..-1])
    else
      raise NotSupportedException.new("#{operator} in #{ast.inspect} not supported")
    end
  else
    raise NotSupportedException.new("#{ast} not supported")
  end
end
not_settable_code(s,c) click to toggle source
# File src/compile/c/compile_named_reference_setters.rb, line 61
def not_settable_code(s,c)
  "  // #{s}_#{c} not settable"
end
reset() click to toggle source
# File src/compile/c/compile_named_reference_setters.rb, line 10
def reset
  @new_value_name = "newValue"
end
settable(sheet, reference) click to toggle source
# File src/compile/c/compile_named_reference_setters.rb, line 54
def settable(sheet, reference)
  settable_refs = cells_that_can_be_set_at_runtime[sheet]
  return false unless settable_refs
  return true if settable_refs == :all
  settable_refs.include?(reference.upcase.to_sym) 
end
settable_code(s,c) click to toggle source
# File src/compile/c/compile_named_reference_setters.rb, line 65
def settable_code(s,c)
  "  set_#{s}_#{c}(#{@new_value_name});"
end
sheet_reference(sheet,reference) click to toggle source
# File src/compile/c/compile_named_reference_setters.rb, line 31
def sheet_reference(sheet,reference)
  s = sheet_names[sheet]
  c = map(reference)
  return not_settable_code(s,c) unless settable(sheet, c)
  settable_code(s,c)
end