Sha256: ffeb48998ab0e1ded894f897fef7f3d7507c39ce86aa2270dd9c5199ddea8d01
Contents?: true
Size: 984 Bytes
Versions: 2
Compression:
Stored size: 984 Bytes
Contents
# frozen_string_literal: true require 'opal/nodes/scope' module Opal module Nodes class ModuleNode < ScopeNode handle :module children :cid, :body def compile name, base = name_and_base helper :module push '(function($base, $parent_nesting) {' line " var self = $module($base, '#{name}');" in_scope do scope.name = name compile_body end line '})(', base, ', $nesting)' end private # cid is always s(:const, scope_sexp_or_nil, :ConstName) def name_and_base base, name = cid.children if base.nil? [name, '$nesting[0]'] else [name, expr(base)] end end def compile_body add_temp '$nesting = [self].concat($parent_nesting)' body_code = stmt(compiler.returns(body || s(:nil))) empty_line line scope.to_vars line body_code end end end end
Version data entries
2 entries across 2 versions & 1 rubygems
Version | Path |
---|---|
opal-1.2.0 | lib/opal/nodes/module.rb |
opal-1.2.0.beta1 | lib/opal/nodes/module.rb |