Sha256: 0e5da31b892d51e2f88ae8a690b93c523e8e931906dd6c5fce5962096ddbd732
Contents?: true
Size: 1022 Bytes
Versions: 2
Compression:
Stored size: 1022 Bytes
Contents
require 'corelib/module' class Class def self.new(sup = Object, &block) %x{ if (!sup.$$is_class) { #{raise TypeError, "superclass must be a Class"}; } function AnonClass(){}; var klass = Opal.boot(sup, AnonClass) klass.$$name = nil; klass.$$parent = sup; klass.$$is_class = true; // inherit scope from parent Opal.create_scope(sup.$$scope, klass); sup.$inherited(klass); if (block !== nil) { var block_self = block.$$s; block.$$s = null; block.call(klass); block.$$s = block_self; } return klass; } end def allocate %x{ var obj = new self.$$alloc(); obj.$$id = Opal.uid(); return obj; } end def inherited(cls) end def new(*args, &block) %x{ var obj = #{allocate}; obj.$initialize.$$p = block; obj.$initialize.apply(obj, args); return obj; } end def superclass `self.$$super || nil` end end
Version data entries
2 entries across 2 versions & 1 rubygems
Version | Path |
---|---|
opal-0.9.0.beta2 | opal/corelib/class.rb |
opal-0.9.0.beta1 | opal/corelib/class.rb |