Class: UnboundMethod

Class | UnboundMethod
In: | lib/core/facets/unboundmethod/arguments.rb lib/core/facets/unboundmethod/name.rb
Parent: | Object

### Methods

arguments name

### Public Instance methods

arguments()

Resolves the arguments of the method to have an identical signiture —useful for preserving arity.

      class X
        def foo(a, b); end
        def bar(a, b=1); end
      end

      foo_method = X.instance_method(:foo)
      foo_method.arguments   #=> "a0, a1"

      bar_method = X.instance_method(:bar)
      bar_method.arguments   #=> "a0, *args"

When defaults are used the arguments must end in "*args".

CREDIT: Trans

[Source]

    # File lib/core/facets/unboundmethod/arguments.rb, line 21
      def arguments
        ar = arity
        case ar <=> 0
        when 1
          args = []
          ar.times do |i|
            args << "a#{i}"
          end
          args = args.join(", ")
        when 0
          args = ""
        else
          ar = -ar - 1
          args = []
          ar.times do |i|
            args << "a#{i}"
          end
          args << "*args"
          args = args.join(", ")
        end
        return args
      end

name()

Return the name of the method.

Be aware that in ruby 1.9 UnboundMethod#name is defined already, but it returns a Symbol not a String.

      class X
        def foo; end
      end

      meth = X.instance_method(:foo)

      meth.name  #=> "foo"

CREDIT: Trans

[Source]

    # File lib/core/facets/unboundmethod/name.rb, line 18
      def name
        i = to_s.rindex('#')
        to_s.slice(i+1...-1)
      end

[Validate]