Sha256: cf2f368746a9c715f25d1df0ad885abb57a32ce8ee2cca5458dc943915aa280a
Contents?: true
Size: 1.23 KB
Versions: 5
Compression:
Stored size: 1.23 KB
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 line " var self = $module($base, '#{name}');" in_scope do scope.name = name compile_body end if await_encountered await_begin = '(await ' await_end = ')' async = 'async ' parent.await_encountered = true else await_begin, await_end, async = '', '', '' end unshift "#{await_begin}(#{async}function($base, $parent_nesting) {" line '})(', base, ", $nesting)#{await_end}" 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
5 entries across 5 versions & 1 rubygems