Class: Class
- Defined in:
- opal/opal/corelib/class.rb,
opal/opal/corelib/marshal/write_buffer.rb
Class Method Summary collapse
Instance Method Summary collapse
- #__marshal__(buffer) ⇒ Object
- #allocate ⇒ Object
- #inherited(cls) ⇒ Object
- #new(*args, &block) ⇒ Object
- #superclass ⇒ Object
- #to_s ⇒ Object
Class Method Details
.new(superclass = Object, &block) ⇒ Object
4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 |
# File 'opal/opal/corelib/class.rb', line 4 def self.new(superclass = Object, &block) %x{ if (!superclass.$$is_class) { throw Opal.TypeError.$new("superclass must be a Class"); } var alloc = Opal.boot_class_alloc(null, function(){}, superclass) var klass = Opal.setup_class_object(null, alloc, superclass.$$name, superclass.constructor); klass.$$super = superclass; klass.$$parent = superclass; // inherit scope from parent Opal.create_scope(superclass.$$scope, klass); superclass.$inherited(klass); Opal.module_initialize(klass, block); return klass; } end |
Instance Method Details
#__marshal__(buffer) ⇒ Object
120 121 122 123 124 125 126 127 128 129 130 131 132 |
# File 'opal/opal/corelib/marshal/write_buffer.rb', line 120 def __marshal__(buffer) unless name raise TypeError, "can't dump anonymous class" end if singleton_class? raise TypeError, "singleton class can't be dumped" end buffer.save_link(self) buffer.append("c") buffer.write_class(self) end |
#allocate ⇒ Object
26 27 28 29 30 31 32 |
# File 'opal/opal/corelib/class.rb', line 26 def allocate %x{ var obj = new self.$$alloc(); obj.$$id = Opal.uid(); return obj; } end |
#inherited(cls) ⇒ Object
34 35 |
# File 'opal/opal/corelib/class.rb', line 34 def inherited(cls) end |
#new(*args, &block) ⇒ Object
37 38 39 40 41 42 43 44 45 |
# File 'opal/opal/corelib/class.rb', line 37 def new(*args, &block) %x{ var obj = #{allocate}; obj.$initialize.$$p = block; obj.$initialize.apply(obj, args); return obj; } end |
#superclass ⇒ Object
47 48 49 |
# File 'opal/opal/corelib/class.rb', line 47 def superclass `self.$$super || nil` end |
#to_s ⇒ Object
51 52 53 54 55 56 57 58 59 60 61 62 63 64 |
# File 'opal/opal/corelib/class.rb', line 51 def to_s %x{ var singleton_of = self.$$singleton_of; if (singleton_of && (singleton_of.$$is_class || singleton_of.$$is_module)) { return #{"#<Class:#{`singleton_of`.name}>"}; } else if (singleton_of) { // a singleton class created from an object return #{"#<Class:#<#{`singleton_of.$$class`.name}:0x#{`singleton_of.$$id`.to_s(16)}>>"}; } return #{super()}; } end |