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