Sha256: 748767e749f7364e3860921807f41e038627b6a20843a3e249be6fc297ab9b40

Contents?: true

Size: 840 Bytes

Versions: 1

Compression:

Stored size: 840 Bytes

Contents

class Class
  def self.new(sup = Object, &block)
    %x{
      function AnonClass(){};
      var klass   = boot_class(sup, AnonClass)
      klass._name = nil;

      sup.$inherited(klass);

      if (block !== nil) {
        block.call(klass);
      }

      return klass;
    }
  end

  def allocate
    %x{
      var obj = new this;
      obj._id = unique_id++;
      return obj;
    }
  end

  def new(*args, &block)
    %x{
      var obj = this.$allocate();
      obj._p  = block;
      obj.$initialize.apply(obj, args);
      return obj;
    }
  end

  def inherited(cls)
  end

  def superclass
    %x{
      var sup = this._super;

      if (!sup) {
        return nil;
      }

      while (sup && (sup._isIClass)) {
        sup = sup._super;
      }

      if (!sup) {
        return nil;
      }

      return sup;
    }
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
opal-0.3.20 core/class.rb