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