Sha256: 7158f4af1b86ba34d011b26012e4b115bbf127ab9f10262d6f38c9dc28e4597e

Contents?: true

Size: 740 Bytes

Versions: 4

Compression:

Stored size: 740 Bytes

Contents

class Module

  private

  # Creates a new method for a pre-existing method.
  #
  # If _aka_ is given, then the method being redefined will
  # first be aliased to this name.
  #
  #   class Greeter
  #     def hello ; "Hello" ; end
  #   end
  #
  #   Greeter.new.hello   #=> "Hello"
  #
  #   class Greeter
  #     redefine_method( :hello, :hi ) do
  #       hi + ", friend!"
  #     end
  #   end
  #
  #   Greeter.new.hello   #=> "Hello, friend!"
  #
  #  CREDIT: Trans

  def redefine_method(sym, aka=nil, &blk)
    raise ArgumentError, "method does not exist" unless method_defined?( sym )
    alias_method( aka, sym ) if aka
    undef_method( sym )
    define_method( sym, &blk )
  end

  alias_method :redef, :redefine_method

end

Version data entries

4 entries across 4 versions & 2 rubygems

Version Path
facets-2.4.3 lib/core/facets/module/redefine_method.rb
facets-2.4.4 lib/core/facets/module/redefine_method.rb
facets-2.4.5 lib/core/facets/module/redefine_method.rb
mack-facets-0.8.2 lib/gems/facets-2.4.5/lib/core/facets/module/redefine_method.rb