Sha256: 762474f0b238885583281eb4020be48d022c42625a617a238da1a96182a40585

Contents?: true

Size: 715 Bytes

Versions: 6

Compression:

Stored size: 715 Bytes

Contents

# backtick_javascript: true

require 'opal-parser'

module Kernel
  def __prepare_require__(path)
    name = `Opal.normalize(#{path})`
    full_path = name.end_with?('.rb') ? name : name + '.rb'

    if `!Opal.modules[#{name}]`
      ruby = File.read(full_path)
      compiler = Opal::Compiler.new(ruby, requirable: true, file: name)
      js = compiler.compile
      compiler.requires.each do |sub_path|
        __prepare_require__(sub_path)
      end
      `eval(#{js})`
    end

    name
  rescue => e
    raise [path, name, full_path].inspect + e.message
  end

  def require(path)
    `Opal.require(#{__prepare_require__(path)})`
  end

  def load(path)
    `Opal.load(#{__prepare_require__(path)})`
  end
end

Version data entries

6 entries across 6 versions & 1 rubygems

Version Path
opal-1.8.3.rc1 stdlib/nodejs/require.rb
opal-1.8.2 stdlib/nodejs/require.rb
opal-1.8.1 stdlib/nodejs/require.rb
opal-1.8.0 stdlib/nodejs/require.rb
opal-1.8.0.beta1 stdlib/nodejs/require.rb
opal-1.8.0.alpha1 stdlib/nodejs/require.rb