def load(*args, &block)
options = args.last.is_a?(Hash) ? args.pop : {}
if block
raise ArgumentError, "loading a block requires 0 arguments" unless options.empty? && args.empty?
load(:proc => block)
elsif args.any?
args.each { |arg| load options.merge(:file => arg) }
elsif options[:file]
load_from_file(options[:file], options[:name])
elsif options[:string]
remember_load(options) unless options[:reloading]
instance_eval(options[:string], options[:name] || "<eval>")
elsif options[:proc]
remember_load(options) unless options[:reloading]
instance_eval(&options[:proc])
else
raise ArgumentError, "don't know how to load #{options.inspect}"
end
end