Sha256: 2702f80d524cb489b9d3719b887ed8962734d6819563f771f19719a9cd1633f0

Contents?: true

Size: 1.45 KB

Versions: 26

Compression:

Stored size: 1.45 KB

Contents

$" = [__FILE__]

class ScriptLoader
  @@loading_paths = {}

  def initialize(path)
    @base_path = path
  end

  def load_once
    if absolute_path?(@base_path)
      loaded = load_once_path(@base_path)
      if loaded.nil?
        raise LoadError, error_message
      else
        loaded
      end
    else
      $LOAD_PATH.each do |load_path|
        unless absolute_path?(load_path)
          load_path = File.expand_path(load_path)
          if File::ALT_SEPARATOR
            load_path = load_path.gsub(File::ALT_SEPARATOR, "/")
          end
        end
        loaded = load_once_path(File.join(load_path, @base_path))
        return loaded unless loaded.nil?
      end
      raise LoadError, error_message
    end
  end

  private
  def error_message
    "cannot load such file -- #{@base_path}"
  end

  def absolute_path?(path)
    path.start_with?("/") or (/\A[a-z]:\\/i === path)
  end

  def load_once_path(path)
    loaded = load_once_absolute_path(path)
    return loaded unless loaded.nil?

    return nil unless File.extname(path).empty?

    load_once_absolute_path("#{path}.rb")
  end

  def load_once_absolute_path(path)
    return false if $".include?(path)
    return false if @@loading_paths.key?(path)

    return nil unless File.file?(path)

    @@loading_paths[path] = true
    load(path)
    $" << path
    @@loading_paths.delete(path)

    true
  end
end

module Kernel
  def require(path)
    loader = ScriptLoader.new(path)
    loader.load_once
  end
end

Version data entries

26 entries across 26 versions & 1 rubygems

Version Path
rroonga-9.0.7-x64-mingw32 vendor/local/lib/groonga/scripts/ruby/require.rb
rroonga-9.0.7-x86-mingw32 vendor/local/lib/groonga/scripts/ruby/require.rb
rroonga-9.0.3-x64-mingw32 vendor/local/lib/groonga/scripts/ruby/require.rb
rroonga-9.0.3-x86-mingw32 vendor/local/lib/groonga/scripts/ruby/require.rb
rroonga-9.0.2-x64-mingw32 vendor/local/lib/groonga/scripts/ruby/require.rb
rroonga-9.0.2-x86-mingw32 vendor/local/lib/groonga/scripts/ruby/require.rb
rroonga-7.1.1-x64-mingw32 vendor/local/lib/groonga/scripts/ruby/require.rb
rroonga-7.1.1-x86-mingw32 vendor/local/lib/groonga/scripts/ruby/require.rb
rroonga-7.0.2-x86-mingw32 vendor/local/lib/groonga/scripts/ruby/require.rb
rroonga-7.0.2-x64-mingw32 vendor/local/lib/groonga/scripts/ruby/require.rb
rroonga-6.1.3-x64-mingw32 vendor/local/lib/groonga/scripts/ruby/require.rb
rroonga-6.1.3-x86-mingw32 vendor/local/lib/groonga/scripts/ruby/require.rb
rroonga-6.1.0-x86-mingw32 vendor/local/lib/groonga/scripts/ruby/require.rb
rroonga-6.1.0-x64-mingw32 vendor/local/lib/groonga/scripts/ruby/require.rb
rroonga-6.0.9-x64-mingw32 vendor/local/lib/groonga/scripts/ruby/require.rb
rroonga-6.0.9-x86-mingw32 vendor/local/lib/groonga/scripts/ruby/require.rb
rroonga-6.0.7-x86-mingw32 vendor/local/lib/groonga/scripts/ruby/require.rb
rroonga-6.0.7-x64-mingw32 vendor/local/lib/groonga/scripts/ruby/require.rb
rroonga-6.0.5-x64-mingw32 vendor/local/lib/groonga/scripts/ruby/require.rb
rroonga-6.0.5-x86-mingw32 vendor/local/lib/groonga/scripts/ruby/require.rb