Sha256: f9ede68523cd982615b1e843eaa51c9cec4e35f8a89f6fa93413fc8e22322a8d
Contents?: true
Size: 886 Bytes
Versions: 2
Compression:
Stored size: 886 Bytes
Contents
require 'opal/nodes/module' module Opal module Nodes class ClassNode < ModuleNode handle :class children :cid, :sup, :body def compile name, base = name_and_base helper :klass push "(function($base, $super) {" line " function $#{name}(){};" line " var self = $#{name} = $klass($base, $super, '#{name}', $#{name});" in_scope do scope.name = name add_temp "#{scope.proto} = $#{name}._proto" add_temp "$scope = $#{name}._scope" body_code = self.body_code empty_line line scope.to_vars line body_code end line "})(", base, ", ", self.super_code, ")" end def super_code sup ? expr(sup) : 'null' end def body_code stmt(compiler.returns(body || s(:nil))) end end end end
Version data entries
2 entries across 2 versions & 1 rubygems
Version | Path |
---|---|
opal-0.5.5 | lib/opal/nodes/class.rb |
opal-0.5.4 | lib/opal/nodes/class.rb |