Sha256: eaedd16b2c4b7ffb7364dde0784943d323d4d43de39a0929abfe2d167a486824
Contents?: true
Size: 1.36 KB
Versions: 2
Compression:
Stored size: 1.36 KB
Contents
require 'opal/version' require 'opal/nodes/scope' module Opal module Nodes # Generates code for an entire file, i.e. the base sexp class TopNode < ScopeNode handle :top children :body def compile push version_comment line "(function($opal) {" in_scope do body_code = stmt(stmts) body_code = [body_code] unless body_code.is_a?(Array) add_temp 'self = $opal.top' add_temp '$scope = $opal' add_temp 'nil = $opal.nil' add_used_helpers line scope.to_vars compile_method_stubs compile_irb_vars line body_code end line "})(Opal);\n" end def stmts compiler.returns(body) end def compile_irb_vars if compiler.irb? line "if (!$opal.irb_vars) { $opal.irb_vars = {}; }" end end def add_used_helpers helpers = compiler.helpers.to_a helpers.to_a.each { |h| add_temp "$#{h} = $opal.#{h}" } end def compile_method_stubs if compiler.method_missing? calls = compiler.method_calls stubs = calls.to_a.map { |k| "'$#{k}'" }.join(', ') line "$opal.add_stubs([#{stubs}]);" end end def version_comment "/* Generated by Opal #{Opal::VERSION} */" end end end end
Version data entries
2 entries across 2 versions & 1 rubygems
Version | Path |
---|---|
opal-0.5.5 | lib/opal/nodes/top.rb |
opal-0.5.4 | lib/opal/nodes/top.rb |