lib/nydp.rb in nydp-0.4.3 vs lib/nydp.rb in nydp-0.4.5
- old
+ new
@@ -9,10 +9,13 @@
def self.apply_function ns, function_name, *args
vm = VM.new(ns)
function = Symbol.mk(function_name.to_sym, ns).value
function.invoke vm, r2n(args)
vm.thread
+ rescue StandardError => e
+ friendly_args = args.map { |a| a.respond_to?(:_nydp_compact_inspect) ? a._nydp_compact_inspect : a }
+ raise Nydp::Error.new("Invoking #{function_name}\nwith args #{friendly_args.inspect}")
end
def self.reader txt ; Nydp::StringReader.new txt ; end
def self.eval_src ns, src_txt, name=nil ; eval_with Nydp::Runner, ns, src_txt, name ; end
def self.eval_with runner, ns, src_txt, name ; runner.new(VM.new(ns), ns, reader(src_txt), nil, name).run ; end
@@ -46,12 +49,12 @@
end
end
def self.repl options={ }
toplevel do
- silent = options.delete :silent
- ns = options.delete :ns
- launch_time = Time.now
+ launch_time = Time.now
+ silent = options.delete :silent
+ ns = options.delete :ns
last_script_time = Time.now
puts "welcome to nydp #{options.inspect}" unless silent
reader = Nydp::ReadlineReader.new $stdin, "nydp > "
ns ||= build_nydp do |script|
this_script_time = Time.now