From 35b74de7703515cf93da2d3e850702f58a2a6f48 Mon Sep 17 00:00:00 2001 From: David Heinemeier Hansson Date: Sun, 12 Feb 2006 21:31:28 +0000 Subject: Use real assigns instead of a method call [DHH] git-svn-id: http://svn-commit.rubyonrails.org/rails/trunk@3591 5ecf4fe2-1ee6-0310-87b1-e25e094e27de --- actionpack/lib/action_view/helpers/prototype_helper.rb | 18 ++++++++++++------ actionpack/test/template/prototype_helper_test.rb | 2 +- 2 files changed, 13 insertions(+), 7 deletions(-) diff --git a/actionpack/lib/action_view/helpers/prototype_helper.rb b/actionpack/lib/action_view/helpers/prototype_helper.rb index a953eab659..9a65fee855 100644 --- a/actionpack/lib/action_view/helpers/prototype_helper.rb +++ b/actionpack/lib/action_view/helpers/prototype_helper.rb @@ -671,10 +671,6 @@ module ActionView @generator = generator @generator << root end - - def assign(variable, value) - append_to_function_chain! "#{variable} = #{@generator.send(:javascript_object_for, value)}" - end def replace_html(*options_for_render) call 'update', @generator.render(*options_for_render) @@ -685,12 +681,22 @@ module ActionView end private + def method_missing(method, *arguments) + if method.to_s =~ /(.*)=$/ + assign($1, arguments.first) + else + call(method, *arguments) + end + end + def call(function, *arguments) append_to_function_chain!("#{function}(#{@generator.send(:arguments_for_call, arguments)})") self end - - alias_method :method_missing, :call + + def assign(variable, value) + append_to_function_chain! "#{variable} = #{@generator.send(:javascript_object_for, value)}" + end def function_chain @function_chain ||= @generator.instance_variable_get("@lines") diff --git a/actionpack/test/template/prototype_helper_test.rb b/actionpack/test/template/prototype_helper_test.rb index fc8961f02a..326363dc58 100644 --- a/actionpack/test/template/prototype_helper_test.rb +++ b/actionpack/test/template/prototype_helper_test.rb @@ -238,7 +238,7 @@ Element.update("baz", "

This is a test

"); end def test_element_proxy_assignment - @generator['hello'].assign :width, 400 + @generator['hello'].width = 400 assert_equal %($('hello').width = 400;), @generator.to_s end -- cgit v1.2.3