lib/nydp.rb in nydp-0.2.0 vs lib/nydp.rb in nydp-0.2.1

- old
+ new

@@ -5,24 +5,30 @@ def self.load_rake_tasks; PLUGINS.each &:load_rake_tasks ; end def self.setup ns; PLUGINS.each { |plg| plg.setup ns } ; end def self.loadfiles; PLUGINS.map(&:loadfiles).flatten ; end def self.testfiles; PLUGINS.map(&:testfiles).flatten ; end def self.plugin_names ; PLUGINS.map(&:name) ; end - def self.loadall ns, files + def self.loadall ns, plugin, files vm = VM.new(ns) + apply_function ns, :"script-run", :"plugin-start", plugin.name if plugin files.each { |f| + script_name = f.gsub plugin.base_path, "" reader = Nydp::StreamReader.new(File.new(f)) - Nydp::Runner.new(vm, ns, reader).run + Nydp::Runner.new(vm, ns, reader, nil, (script_name || f)).run } + ensure + apply_function ns, :"script-run", :"plugin-end", plugin.name if plugin end def self.build_nydp extra_files=nil ns = { } setup(ns) - loadall ns, loadfiles - loadall ns, testfiles - loadall ns, extra_files if extra_files + PLUGINS.each { |plg| + loadall ns, plg, plg.loadfiles + loadall ns, plg, plg.testfiles + } + loadall ns, nil, extra_files if extra_files ns end def self.apply_function ns, function_name, *args function = r2n(function_name.to_sym, ns).value @@ -31,28 +37,28 @@ function.invoke vm, args vm.thread end - def self.reader txt ; Nydp::StringReader.new txt ; end - def self.eval_src ns, src_txt ; eval_with Nydp::Runner, ns, src_txt ; end - def self.eval_src! ns, src_txt ; eval_with Nydp::ExplodeRunner, ns, src_txt ; end - def self.eval_with runner, ns, src_txt ; runner.new(VM.new(ns), ns, reader(src_txt)).run ; 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_src! ns, src_txt, name=nil ; eval_with Nydp::ExplodeRunner, 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 def self.repl puts "welcome to nydp" puts "^D to exit" reader = Nydp::ReadlineReader.new $stdin, "nydp > " ns = build_nydp - Nydp::Runner.new(VM.new(ns), ns, reader, $stdout).run + Nydp::Runner.new(VM.new(ns), ns, reader, $stdout, "<stdin>").run end def self.tests *options verbose = options.include?(:verbose) ? "t" : "nil" puts "welcome to nydp : running tests" reader = Nydp::StringReader.new "(run-all-tests #{verbose})" ns = build_nydp - Nydp::Runner.new(VM.new(ns), ns, reader).run + Nydp::Runner.new(VM.new(ns), ns, reader, nil, "<test-runner>").run end end require "nydp/core"