Sha256: 05afcc05b241e87e615a889226051ba6a043390dce979dc85506a6fa54c8929c

Contents?: true

Size: 1.16 KB

Versions: 4

Compression:

Stored size: 1.16 KB

Contents

module Nydp
  PLUGINS = []

  def self.plug_in plugin ; PLUGINS << plugin                   ; end
  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, 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, nil, (script_name || f)).run
      yield script_name if block_given?
    }
  ensure
    apply_function ns, :"script-run", :"plugin-end", plugin.name if plugin
  end

  def self.build_nydp extra_files=nil, &block
    ns = Namespace.new
    setup(ns)
    PLUGINS.each { |plg|
      loadall ns, plg, plg.loadfiles, &block
      loadall ns, plg, plg.testfiles, &block
    }
    loadall ns, nil, extra_files, &block if extra_files
    ns
  end
end

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
nydp-0.3.0 lib/nydp/plugin.rb
nydp-0.2.6 lib/nydp/plugin.rb
nydp-0.2.5 lib/nydp/plugin.rb
nydp-0.2.3 lib/nydp/plugin.rb