class Opal::Parser::TopScopeNode
needing to manually traverse it each time).
will be passed a :top key, that references this root scope (instead of
Top level scope. This also manages things like line numbers etc. All opts
def generate(opts, level)
def generate(opts, level) @opts = opts code = [] @statements.returns # code << super(opts, level) code << @statements.generate(opts, level) pre = "function($rb, self, __FILE__) {" pre += 'function $$(){' post = "\n}\n" unless @scope_vars.empty? post += "var #{@scope_vars.join ', '};" end post += 'var nil = $rb.Qnil, $super = $rb.S, $break = $rb.B, ' post += '$class = $rb.dc, $defn = $rb.dm, $defs = $rb.ds, $cg = $rb.cg, ' post += '$range = $rb.G, $hash = $rb.H, $B = $rb.P, $rb_send = $rb.sm' post += ';' # ivars @ivars.each do |ivar| if js_reserved_words.include? ivar ivar_name = "self['#{ivar}']" else ivar_name = "self.#{ivar}" end post += "#{ivar_name}===undefined&&(#{ivar_name}=nil);" end post += "return $$();\n" post += "}" pre + code.join('') + post end
def initialize(statements)
def initialize(statements) super nil, statements @file_helpers = [] @line = 1 end
def method_missing?; @method_missing; end
def method_missing?; @method_missing; end
def options=(opts)
def options=(opts) @overload_arithmetic = opts[:overload_arithmetic] || false @overload_comparison = opts[:overload_comparison] || false @overload_bitwise = opts[:overload_bitwise] || false @overload_shift = opts[:overload_shift] || true @overload_equal = opts[:overload_equal] || false @method_missing = opts[:method_missing] || false end
def overload_arithmetic?; @overload_arithmetic; end
def overload_arithmetic?; @overload_arithmetic; end
def overload_bitwise?; @overload_bitwise; end
def overload_bitwise?; @overload_bitwise; end
def overload_comparison?; @overload_comparison; end
def overload_comparison?; @overload_comparison; end
def overload_equal?; @overload_equal; end
def overload_equal?; @overload_equal; end
def overload_shift?; @overload_shift; end
def overload_shift?; @overload_shift; end