Skip to content

Commit

Permalink
Split Method into opal/method.rb
Browse files Browse the repository at this point in the history
  • Loading branch information
adambeynon committed Oct 30, 2013
1 parent 33d698c commit 87fb01a
Show file tree
Hide file tree
Showing 3 changed files with 59 additions and 59 deletions.
58 changes: 58 additions & 0 deletions corelib/method.rb
@@ -0,0 +1,58 @@
class Method
attr_reader :owner, :receiver, :name

def initialize(receiver, method, name)
@receiver = receiver
@owner = receiver.class
@name = name
@method = method
end

def arity
@method.arity
end

def call(*args, &block)
%x{
#@method._p = block;
return #@method.apply(#@object, args);
}
end

alias [] call

def unbind
UnboundMethod.new(@owner, @method, @name)
end

def to_proc
@method
end

def inspect
"#<Method: #{@obj.class.name}##@name}>"
end
end

class UnboundMethod
attr_reader :owner, :name

def initialize(owner, method, name)
@owner = owner
@method = method
@name = name
end

def arity
@method.arity
end

def bind(object)
Method.new(object, @method, @name)
end

def inspect
"#<UnboundMethod: #{@owner.name}##@name>"
end
end
1 change: 1 addition & 0 deletions corelib/opal.rb
Expand Up @@ -17,6 +17,7 @@
require 'encoding'
require 'numeric'
require 'proc'
require 'method'
require 'range'
require 'time'
require 'struct'
Expand Down
59 changes: 0 additions & 59 deletions corelib/proc.rb
Expand Up @@ -54,62 +54,3 @@ def to_n
self
end
end

class Method
attr_reader :owner, :receiver, :name

def initialize(receiver, method, name)
@receiver = receiver
@owner = receiver.class
@name = name
@method = method
end

def arity
@method.arity
end

def call(*args, &block)
%x{
#@method._p = block;
return #@method.apply(#@object, args);
}
end

alias [] call

def unbind
UnboundMethod.new(@owner, @method, @name)
end

def to_proc
@method
end

def inspect
"#<Method: #{@obj.class.name}##@name}>"
end
end

class UnboundMethod
attr_reader :owner, :name

def initialize(owner, method, name)
@owner = owner
@method = method
@name = name
end

def arity
@method.arity
end

def bind(object)
Method.new(object, @method, @name)
end

def inspect
"#<UnboundMethod: #{@owner.name}##@name>"
end
end

0 comments on commit 87fb01a

Please sign in to comment.