Sha256: d42209ccae29236a3397cf6a80cd444cec8992a2fa94e466f7b0a3b758f02d74

Contents?: true

Size: 1.48 KB

Versions: 1

Compression:

Stored size: 1.48 KB

Contents

module Vim
  module Jar 
    module Plugin
      autoload :Git, 'vim-jar/plugin/git.rb'

      def self.find(plugin_name)  
        #TODO use sqlite in the future
        plugin_attrs = plugins.detect{|p| p["name"].to_s.downcase == plugin_name.to_s.downcase } 
        build(plugin_attrs)
      end

      def self.plugins
        return @plugins if @plugins
        if !File.exist? config.yaml_path
          FileUtils.touch config.yaml_path
          @plugins = []
        else 
         @plugins = YAML.load_file(config.yaml_path)  || []
        end
        @plugins
      end

      def self.exist? name 
        #OPTIMIZE
        @exist_list ||= {}
        return @exist_list[name] if @exist_list.has_key? name
        result = self.plugins.any? {|p| p["name"].strip.downcase == name.strip.downcase} 
        @exist_list[name] = result
        result
      end

      def self.insert(attrs) 
        #OPTIMIZE
        if self.exist? attrs["name"]
          return false
        else 
          self.plugins << attrs
          return true
        end
      end

      def self.reset 
        self.instance_variable_set("@plugins", nil)
        self.plugins
      end

      def self.config 
        ::Vim::Jar::Config.instance
      end

      def self.build(plugin_attrs)
        return nil unless plugin_attrs
        type = plugin_attrs["type"]  
        case type
        when "git" 
          ::Vim::Jar::Plugin::Git.new(plugin_attrs)
        else 
          nil
        end
      end
    end
  end
end


Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
vim-jar-0.0.1 lib/vim-jar/plugin.rb