Sha256: d5d771b41298049c536b18cc395369d1aff35c244f83d6ab15686377388f305a

Contents?: true

Size: 1.15 KB

Versions: 37

Compression:

Stored size: 1.15 KB

Contents

class V8::Access
  module Invocation
    def methodcall(code, this, args)
      code.methodcall this, args
    end

    module Aritize
      def aritize(args)
        arity < 0 ? args : Array.new(arity).to_enum(:each_with_index).map {|item, i| args[i]}
      end
    end

    module Proc
      include Aritize
      def methodcall(this, args)
        call *aritize([this].concat(args))
      end
      ::Proc.send :include, self
    end

    module Method
      include Aritize
      def methodcall(this, args)
        context = V8::Context.current
        access = context.access
        if this.equal? self.receiver
          call *aritize(args)
        elsif this.class <= self.receiver.class
          access.methodcall(unbind, this, args)
        elsif this.equal? context.scope
          call *aritize(args)
        else
          fail TypeError, "cannot invoke #{self} on #{this}"
        end
      end
      ::Method.send :include, self
    end

    module UnboundMethod
      def methodcall(this, args)
        access = V8::Context.current.access
        access.methodcall bind(this), this, args
      end
      ::UnboundMethod.send :include, self
    end
  end
end

Version data entries

37 entries across 37 versions & 8 rubygems

Version Path
arcabouco-0.2.13 vendor/bundle/gems/therubyracer-0.12.2/lib/v8/access/invocation.rb
therubyracer-0.12.3 lib/v8/access/invocation.rb
ish_lib_manager-0.0.1 test/dummy/vendor/bundle/ruby/2.3.0/gems/therubyracer-0.11.4/lib/v8/access/invocation.rb
therubyracer-xcode-0.12.3 lib/v8/access/invocation.rb
therubyracer-xcode-0.12.2 lib/v8/access/invocation.rb
therubyracer-tmpfork-0.12.2 lib/v8/access/invocation.rb
sc_core-0.0.7 test/dummy/vendor/bundle/ruby/2.2.0/gems/therubyracer-0.12.2/lib/v8/access/invocation.rb
therubyracer-0.12.2 lib/v8/access/invocation.rb
therubyracer-0.12.1 lib/v8/access/invocation.rb
therubyracer-discourse-0.12.0 lib/v8/access/invocation.rb
therubyracer-0.12.0 lib/v8/access/invocation.rb
therubyracer-0.11.4 lib/v8/access/invocation.rb
therubyracer-0.11.3 lib/v8/access/invocation.rb
therubyracer-0.11.2 lib/v8/access/invocation.rb
sunrise-cms-0.5.0.rc1 vendor/bundle/ruby/1.9.1/gems/therubyracer-0.11.0/lib/v8/access/invocation.rb
therubyracer-0.11.1 lib/v8/access/invocation.rb
therubyracer-0.11.1beta1 lib/v8/access/invocation.rb
therubyracer-0.11.0 lib/v8/access/invocation.rb
therubyracer-0.11.0beta8-x86-freebsd-9 lib/v8/access/invocation.rb
therubyracer-0.11.0beta8-x86_64-linux lib/v8/access/invocation.rb