class DeRjs::Rewriter::Erbify
Public Instance Methods
on_send(node)
click to toggle source
# File lib/de_rjs/rewriter/erbify.rb, line 6 def on_send(node) rewrite_page_calls(node) end
rewrite_page_calls(node)
click to toggle source
# File lib/de_rjs/rewriter/erbify.rb, line 10 def rewrite_page_calls(node) receiver_node, method_name, *arg_nodes = *node if receiver_node.to_a.last == :page case method_name when :replace_html, :replace rewrite_replace_html(receiver_node, method_name, *arg_nodes) when :insert_html rewrite_insert_html(receiver_node, method_name, *arg_nodes) when :redirect_to rewrite_redirect_to(receiver_node, method_name, *arg_nodes) when :visual_effect rewrite_visual_effect(receiver_node, method_name, *arg_nodes) when :[] rewrite_square_bracket(receiver_node, method_name, *arg_nodes) else # All others such as : # page.alert # page.hide # page.redirect_to # page.reload # page.replace # page.select # page.show rewrite_all_args(receiver_node, method_name, *arg_nodes) end end # page[:html_id].some_method if receiver_node.to_a.first.to_a.last == :page && receiver_node.to_a[1] == :[] rewrite_square_bracket(*receiver_node.to_a) rewrite_square_replace(receiver_node, method_name, *arg_nodes) if [:replace, :replace_html].include?(method_name) end end
Protected Instance Methods
is_dom_id_call?(arg_node)
click to toggle source
# File lib/de_rjs/rewriter/erbify.rb, line 105 def is_dom_id_call?(arg_node) array = arg_node.to_a array[0..1] == [nil, :dom_id] #&& array.size == 3 end
rewrite_all_args(receiver_node, method_name, *arg_nodes)
click to toggle source
# File lib/de_rjs/rewriter/erbify.rb, line 56 def rewrite_all_args(receiver_node, method_name, *arg_nodes) arg_nodes.each {|arg_node| rewrite_to_erb_unless_static(arg_node) } end
rewrite_dom_id(id_arg)
click to toggle source
# File lib/de_rjs/rewriter/erbify.rb, line 94 def rewrite_dom_id(id_arg) return if [:str, :sym].include?(id_arg.type) if id_arg.type == :dstr || is_dom_id_call?(id_arg) insert_before id_arg.loc.expression, "%q{<%= " insert_after id_arg.loc.expression, " %>}" else insert_before id_arg.loc.expression, "%q{<%= dom_id_or_string(" insert_after id_arg.loc.expression, ") %>}" end end
rewrite_insert_html(receiver_node, method_name, *arg_nodes)
click to toggle source
position, id, *options_for_render
# File lib/de_rjs/rewriter/erbify.rb, line 67 def rewrite_insert_html(receiver_node, method_name, *arg_nodes) rewrite_to_erb_unless_static(arg_nodes.shift) rewrite_to_erb_unless_static(arg_nodes.shift) rewrite_options_for_render(arg_nodes) end
rewrite_options_for_render(arg_nodes)
click to toggle source
if Hash, render else assume it's a string
# File lib/de_rjs/rewriter/erbify.rb, line 112 def rewrite_options_for_render(arg_nodes) return if arg_nodes.size == 1 && arg_nodes.first.type == :str if arg_nodes.first.type == :hash insert_before arg_nodes.first.loc.expression, "%q{<%= escape_javascript(render(" insert_after arg_nodes.last.loc.expression, ")) %>}" else insert_before arg_nodes.first.loc.expression, "%q{<%= escape_javascript(" insert_after arg_nodes.last.loc.expression, ") %>}" end end
rewrite_redirect_to(receiver_node, method_name, *arg_nodes)
click to toggle source
location (string, or url_for compatible options)
# File lib/de_rjs/rewriter/erbify.rb, line 74 def rewrite_redirect_to(receiver_node, method_name, *arg_nodes) rewrite_url_for(arg_nodes.first) end
rewrite_replace_html(receiver_node, method_name, *arg_nodes)
click to toggle source
id, *options_for_render
# File lib/de_rjs/rewriter/erbify.rb, line 61 def rewrite_replace_html(receiver_node, method_name, *arg_nodes) rewrite_to_erb_unless_static(arg_nodes.shift) rewrite_options_for_render(arg_nodes) end
rewrite_square_bracket(receiver_node, method_name, *arg_nodes)
click to toggle source
rewrite_square_replace(receiver_node, method_name, *arg_nodes)
click to toggle source
*options_for_render
# File lib/de_rjs/rewriter/erbify.rb, line 84 def rewrite_square_replace(receiver_node, method_name, *arg_nodes) rewrite_options_for_render(arg_nodes) end
rewrite_to_erb_unless_static(id_arg)
click to toggle source
# File lib/de_rjs/rewriter/erbify.rb, line 88 def rewrite_to_erb_unless_static(id_arg) return if [:str, :sym].include?(id_arg.type) insert_before id_arg.loc.expression, "%q{<%= " insert_after id_arg.loc.expression, " %>}" end
rewrite_url_for(url_arg)
click to toggle source
# File lib/de_rjs/rewriter/erbify.rb, line 123 def rewrite_url_for(url_arg) return if url_arg.type == :str insert_before url_arg.loc.expression, "%q{<%= url_for(" insert_after url_arg.loc.expression, ") %>}" end
rewrite_visual_effect(receiver_node, method_name, *arg_nodes)
click to toggle source
name, id=nil, options
# File lib/de_rjs/rewriter/erbify.rb, line 52 def rewrite_visual_effect(receiver_node, method_name, *arg_nodes) rewrite_to_erb_unless_static(arg_nodes[1]) if arg_nodes[1] end