class ActionView::Helpers::JavaScriptProxy

:nodoc:
Converts chained method calls on DOM proxy elements into JavaScript chains

def append_to_function_chain!(call)

def append_to_function_chain!(call)
  function_chain[-1].chomp!(';')
  function_chain[-1] += ".#{call};"
end

def assign(variable, value)

def assign(variable, value)
  append_to_function_chain!("#{variable} = #{@generator.send(:javascript_object_for, value)}")
end

def call(function, *arguments, &block)

def call(function, *arguments, &block)
  append_to_function_chain!("#{function}(#{@generator.send(:arguments_for_call, arguments, block)})")
  self
end

def function_chain

def function_chain
  @function_chain ||= @generator.instance_variable_get(:@lines)
end

def initialize(generator, root = nil)

def initialize(generator, root = nil)
  @generator = generator
  @generator << root if root
end

def is_a?(klass)

def is_a?(klass)
  klass == JavaScriptProxy
end

def method_missing(method, *arguments, &block)

def method_missing(method, *arguments, &block)
  if method.to_s =~ /(.*)=$/
    assign($1, arguments.first)
  else
    call("#{method.to_s.camelize(:lower)}", *arguments, &block)
  end
end