Sha256: 189f361a2881a0a28c9dd95c2a1d3d4ed41949d420e89dc5e70a48403f096b71

Contents?: true

Size: 1.39 KB

Versions: 4

Compression:

Stored size: 1.39 KB

Contents

class PluginManager
  class PluginDefinition
    attr_accessor :name,
                  :version,
                  :object_string,
                  :file,
                  :dependencies,
                  :definition_file
                  
    def inspect1              
      "<Plugin #{name} #{version} depends:[#{(dependencies||[]).map{|dep| dep.join("")}.join(", ")}] #{required_files.length} files>"
    end
    
    def inspect
      inspect1
    end
    
    def required_files
      @required_files ||= []
    end
    
    def load
      required_files.each do |file|
        #fn = File.expand_path(file, definition_directory)
        #p file
        #p fn
        #if fn.match(/^#{Regexp.escape(definition_directory)}/)
        #p :delete
          $".delete(file)
        #end
      end
      load_file = File.expand_path(File.join(File.dirname(definition_file), file))
      $:.unshift(File.dirname(load_file))
      new_files = log_requires do
        require load_file
      end
      required_files.unshift(*new_files)
      if object.respond_to?(:loaded)
        object.loaded
      end
    end
    
    def object
      eval(object_string)
    end
    
    def definition_directory
      File.expand_path(File.dirname(@definition_file))
    end
    
    private
    
    def log_requires
      before = $".dup 
      yield
      after = $".dup
      result = after - before
      result
    end
  end
end

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
redcar-0.3.4.3 lib/plugin_manager/lib/plugin_manager/plugin_definition.rb
redcar-0.3.4.2 lib/plugin_manager/lib/plugin_manager/plugin_definition.rb
redcar-0.3.4.1 lib/plugin_manager/lib/plugin_manager/plugin_definition.rb
redcar-0.3.4 lib/plugin_manager/lib/plugin_manager/plugin_definition.rb