Changeset 5091
- Timestamp:
- 09/12/06 07:10:43 (2 years ago)
- Files:
-
- trunk/activesupport/CHANGELOG (modified) (1 diff)
- trunk/activesupport/lib/active_support/core_ext/module/aliasing.rb (modified) (1 diff)
- trunk/activesupport/test/core_ext/module_test.rb (modified) (3 diffs)
Legend:
- Unmodified
- Added
- Removed
- Modified
- Copied
- Moved
trunk/activesupport/CHANGELOG
r5053 r5091 1 1 *SVN* 2 3 * alias_method_chain works with accessor= methods also. #6153 [Caio Chassot] 2 4 3 5 * Fix loadable_constants_for_path to handle load paths that do not end with a slash. [Nicholas Seckar] trunk/activesupport/lib/active_support/core_ext/module/aliasing.rb
r4653 r5091 24 24 # Strip out punctuation on predicates or bang methods since 25 25 # e.g. target?_without_feature is not a valid method name. 26 aliased_target, punctuation = target.to_s.sub(/([?! ])$/, ''), $126 aliased_target, punctuation = target.to_s.sub(/([?!=])$/, ''), $1 27 27 alias_method "#{aliased_target}_without_#{feature}#{punctuation}", target 28 28 alias_method target, "#{aliased_target}_with_#{feature}#{punctuation}" trunk/activesupport/test/core_ext/module_test.rb
r4920 r5091 109 109 110 110 def quux_with_baz! 111 quux_without_baz! << '_with_baz !'111 quux_without_baz! << '_with_baz' 112 112 end 113 113 114 114 def quux_with_baz? 115 115 false 116 end 117 118 def quux_with_baz=(v) 119 send(:quux_without_baz=, v) << '_with_baz' 116 120 end 117 121 end … … 155 159 assert @instance.respond_to?(:quux_with_baz!) 156 160 157 assert_equal 'quux_with_baz !', @instance.quux!161 assert_equal 'quux_with_baz', @instance.quux! 158 162 assert_equal 'quux', @instance.quux_without_baz! 159 163 end 160 164 161 165 def test_alias_method_chain_with_same_names_between_predicates_and_bang_methods 162 FooClassWithBarMethod.send(:define_method, 'quux!', Proc.new { 'quux ' })166 FooClassWithBarMethod.send(:define_method, 'quux!', Proc.new { 'quux!' }) 163 167 FooClassWithBarMethod.send(:define_method, 'quux?', Proc.new { true }) 168 FooClassWithBarMethod.send(:define_method, 'quux=', Proc.new { 'quux=' }) 164 169 assert !@instance.respond_to?(:quux_with_baz!) 165 170 assert !@instance.respond_to?(:quux_with_baz?) 166 167 FooClassWithBarMethod.send(:include, BarMethodAliaser) 168 FooClassWithBarMethod.alias_method_chain :quux!, :baz 169 FooClassWithBarMethod.alias_method_chain :quux?, :baz 170 171 assert !@instance.respond_to?(:quux_with_baz=) 172 173 FooClassWithBarMethod.send(:include, BarMethodAliaser) 171 174 assert @instance.respond_to?(:quux_with_baz!) 172 175 assert @instance.respond_to?(:quux_with_baz?) 173 assert_equal 'quux_with_baz!', @instance.quux! 174 assert_equal 'quux', @instance.quux_without_baz! 176 assert @instance.respond_to?(:quux_with_baz=) 177 178 179 FooClassWithBarMethod.alias_method_chain :quux!, :baz 180 assert_equal 'quux!_with_baz', @instance.quux! 181 assert_equal 'quux!', @instance.quux_without_baz! 182 183 FooClassWithBarMethod.alias_method_chain :quux?, :baz 175 184 assert_equal false, @instance.quux? 176 185 assert_equal true, @instance.quux_without_baz? 186 187 FooClassWithBarMethod.alias_method_chain :quux=, :baz 188 assert_equal 'quux=_with_baz', @instance.send(:quux=, 1234) 189 assert_equal 'quux=', @instance.send(:quux_without_baz=, 1234) 177 190 end 178 191 … … 184 197 FooClassWithBarMethod.alias_method_chain :quux, :baz! 185 198 assert_nothing_raised do 186 assert_equal 'quux_with_baz !', @instance.quux_with_baz!199 assert_equal 'quux_with_baz', @instance.quux_with_baz! 187 200 end 188 201