Sha256: 406714d705a87fe1160e2cc7ad38a2f8b59383c8a2da1d6f009fa95e39f2d9d1
Contents?: true
Size: 1.58 KB
Versions: 1
Compression:
Stored size: 1.58 KB
Contents
require "ruby_es6_module_transpiler/version" require 'execjs' require 'json' module RubyES6ModuleTranspiler class << self attr_accessor :js_code Node = ::ExecJS::ExternalRuntime.new( name: 'Node.js (V8)', command: ['nodejs', 'node'], runner_path: File.expand_path('../support/es6-node-runner.js', __FILE__), encoding: 'UTF-8' ) # accepts amd, cjs, yui, or global. defaults to amd. def transpile(code, options = {}) @js_code = code Node.exec(generate_source(options)) end private def transpiler_js_path File.expand_path('../support/es6-module-transpiler.min.js', __FILE__) end def generate_source(options) source = <<-SOURCE var Compiler, compiler, output; Compiler = require("#{transpiler_js_path}").Compiler; compiler = new Compiler(#{::JSON.generate(@js_code, quirks_mode: true)}, '#{module_name(options)}', #{options.to_json}); return output = compiler.#{compiler_type(options)}(); SOURCE end def read_js_file(path) file = File.open(path, "rb") data = file.read file.close data end def compiler_type(options) available_types = { amd: 'AMD', cjs: 'CJS', yui: 'YUI', globals: 'Globals' } if options[:type] type = available_types[options[:type].downcase.to_sym] || 'AMD' else type = 'AMD' end "to#{type}" end def module_name(options) options[:moduleName] end end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
ruby_es6_module_transpiler-0.0.5 | lib/ruby_es6_module_transpiler.rb |