class CanvasContext
  def initialize
    @code = ''
  end

  def code
    "(function() {\n" + @code + "})();"
  end

  def add_code(c)
    @code += c
  end

  def method_missing(name, *a)
    name = name.to_s
    if name[-1] == ?=
      raise if a.size != 1
      @code += "ctx." + name + a[0].inspect + ";\n"
    else
      # @code += "ctx.#{name}(" + a.map{|_|_.inspect.gsub('\\','\&\&')} * ',' + ");\n"
      @code += "ctx.#{name}(" + a.map{|_|_.inspect} * ',' + ");\n"
    end
  end
end

if __FILE__ == $0
  ctx = CanvasContext.new
  ctx.fillStyle = 'rgb(0,0,0)'
  ctx.fillRect(0, 0, 640, 480)
  puts ctx.code
end

