Sha256: d133cb0d68f10892f50a3f5f25745b669c581c749a4014a939ad2d1944617946
Contents?: true
Size: 1.7 KB
Versions: 1
Compression:
Stored size: 1.7 KB
Contents
require 'ruby2js' module Ruby2JS module Filter module Require include SEXP @@valid_path = /\A[-\w_.]+\Z/ def self.valid_path=(valid_path) @@valid_path = valid_path end def on_send(node) if not @require_expr and # only statements node.children.length == 3 and node.children[0] == nil and [:require, :require_relative].include? node.children[1] and node.children[2].type == :str and @options[:file] then begin file2 = @options[:file2] basename = node.children[2].children.first dirname = File.dirname(File.expand_path(@options[:file])) if file2 and node.children[1] == :require_relative dirname = File.dirname(File.expand_path(file2)) end filename = File.join(dirname, basename) segments = basename.split(/[\/\\]/) if segments.all? {|path| path =~ @@valid_path and path != '..'} filename.untaint end @options[:file2] = filename process Ruby2JS.parse(File.read(filename)) ensure if file2 @options[:file2] = file2 else @options.delete(:file2) end end else begin require_expr, @require_expr = @require_expr, true super ensure @require_expr = require_expr end end end def on_lvasgn(node) require_expr, @require_expr = @require_expr, true super ensure @require_expr = require_expr end end DEFAULTS.push Require end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
ruby2js-1.13.1 | lib/ruby2js/filter/require.rb |