Module: Kernel

Defined in:
lib/import.rb

Instance Method Summary collapse

Instance Method Details

#import(path) ⇒ Object



148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
# File 'lib/import.rb', line 148

def import(path)
  absolute_path = Imports.resolve_path(path)

  object = Imports.register[absolute_path] ||= begin
    code   = File.read(absolute_path)
    object = Imports::Context.new(path)
    object.instance_eval(code, path)
    object
  end

  keys = object.exports.__DATA__.keys
  if keys.include?(:default) && keys.length == 1
    return object.exports.default
  elsif keys.include?(:default) && keys.length > 1
    raise "Default export detected, but it wasn't the only export: #{keys.inspect}"
  else
    return object.exports
  end
end