module Apotomo module JavascriptMethods # Returns the escaped script. def escape_js(script) Apotomo.js_generator.escape(script) end # Wraps the rendered content in a replace statement according to your +Apotomo.js_framework+ setting. # Received the same options as #render plus an optional +selector+ to change the selector. # # Example (with Apotomo.js_framework = :jquery): # # def hungry # replace # # will render the current state's view and wrap it like # # "jQuery(\"#mouse\").replaceWith(\"
hungry!<\\/div>\")" # # You may pass a selector and pass options to render here, as well. # # replace "#jerry h1", :view => :squeak # #=> "jQuery(\"#jerry h1\").replaceWith(\"
squeak!<\\/div>\")" def replace(*args) wrap_in_javascript_for(:replace, *args) end # Same as #replace except that the content is wrapped in an update statement. # # Example for +:jquery+: # # update :view => :peek # #=> "jQuery(\"#mouse\").html(\"looking...")" def update(*args) wrap_in_javascript_for(:update, *args) end private def wrap_in_javascript_for(mode, *args) selector = args.first.is_a?(String) ? args.shift : false content = render(*args) selector ? Apotomo.js_generator.send(mode, selector, content) : # replace(:twitter) Apotomo.js_generator.send("#{mode}_id", name, content) # replace_id(:twitter) end end end