Module: AccessorUtilities::Swizzle
- Defined in:
- lib/accessor_utilities/swizzle.rb
Instance Method Summary collapse
-
#swizzle_method(method_name, swizzled_method_prefix = nil, append_equals_to_method_name = false, &method_definition) ⇒ Object
swizzle_method #.
-
#unswizzle_method(method_name, swizzled_method_prefix = nil, append_equals_to_method_name = false) ⇒ Object
unswizzle_method #.
Instance Method Details
#swizzle_method(method_name, swizzled_method_prefix = nil, append_equals_to_method_name = false, &method_definition) ⇒ Object
swizzle_method #
9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 |
# File 'lib/accessor_utilities/swizzle.rb', line 9 def swizzle_method( method_name, swizzled_method_prefix = nil, append_equals_to_method_name = false, & method_definition ) swizzling_method_name = ( append_equals_to_method_name ? method_name.write_accessor_name : method_name ) swizzled_method_prefix = :swizzle__ unless swizzled_method_prefix # alias existing method swizzled_method_name = method_name.swizzle_name( swizzled_method_prefix, append_equals_to_method_name ) alias_method( swizzled_method_name, swizzling_method_name ) # declare new method in place of old define_method( ( append_equals_to_method_name ? method_name.write_accessor_name : method_name ), & method_definition ) return swizzled_method_name end |
#unswizzle_method(method_name, swizzled_method_prefix = nil, append_equals_to_method_name = false) ⇒ Object
unswizzle_method #
30 31 32 33 34 35 36 37 38 39 40 41 42 43 |
# File 'lib/accessor_utilities/swizzle.rb', line 30 def unswizzle_method( method_name, swizzled_method_prefix = nil, append_equals_to_method_name = false ) swizzling_method_name = ( append_equals_to_method_name ? method_name.write_accessor_name : method_name ) # if we have an aliased method, alias it back swizzle_name = method_name.swizzle_name( swizzled_method_prefix, append_equals_to_method_name ) alias_method( swizzling_method_name, swizzle_name ) if method_defined?( swizzle_name ) # remove swizzled method unswizzled_method = remove_method( swizzle_name ) return unswizzled_method end |