Sha256: 75427eb45caf98440471d5570e797253a07807421289076caea9ea79333d46e3
Contents?: true
Size: 1.19 KB
Versions: 2
Compression:
Stored size: 1.19 KB
Contents
# frozen_string_literal: true module Jsrb class Base def initialize @context = JSStatementContext.new end def generate_code generator = self.class.code_generator_class.new generator.call type: 'Program', sourceType: 'script', body: @context.stacks.first end def var!(id = nil) id ||= @context.gen_var_name! if block_given? raw_expr = yield val = raw_expr.is_a?(ExprChain) ? raw_expr : expr(@context.ruby_to_js_ast(raw_expr)) val.as_variable_declaration!(id) else expr.as_variable_declaration!(id) end expr.member!(id) end def if!(cond_expr, &block) CondChain.new(@context, false).elsif(cond_expr, &block) end def if(cond_expr, &block) CondChain.new(@context, true).elsif(cond_expr, &block) end def expr(object = nil) @context.new_expression(object) end class << self def code_generator_class @code_generator_class ||= Object.const_get(code_generator) end def code_generator @code_generator || 'Jsrb::NotFastGenerator' end attr_writer :code_generator end end end
Version data entries
2 entries across 2 versions & 1 rubygems
Version | Path |
---|---|
jsrb-0.2.0 | lib/jsrb/base.rb |
jsrb-0.1.0 | lib/jsrb/base.rb |