Sha256: cf918930da7726aa2fd6d6ec4e0c22819e9dff636fc9a48484e5ec83d6cdf6b8
Contents?: true
Size: 1.62 KB
Versions: 2
Compression:
Stored size: 1.62 KB
Contents
#This class maps completions to their full paths for the given blobs class Lightning class CompletionMap attr_accessor :map attr_reader :alias_map def initialize(*globs) options = globs[-1].is_a?(Hash) ? globs.pop : {} globs.flatten! @map = create_map_for_globs(globs) @alias_map = (options[:global_aliases] || {}).merge(options[:aliases] || {}) end def [](completion) @map[completion] || @alias_map[completion] end def keys (@map.keys + @alias_map.keys).uniq end #should return hash def create_map_for_globs(globs) path_hash = {} ignore_paths = ['.', '..'] + Lightning.ignore_paths globs.each do |d| Dir.glob(d, File::FNM_DOTMATCH).each do |e| basename = File.basename(e) unless ignore_paths.include?(basename) #save paths of duplicate basenames to process later if path_hash.has_key?(basename) if path_hash[basename].is_a?(Array) path_hash[basename] << e else path_hash[basename] = [path_hash[basename], e] end else path_hash[basename] = e end end end end map_duplicate_basenames(path_hash) path_hash end #map saved duplicates def map_duplicate_basenames(path_hash) path_hash.select {|k,v| v.is_a?(Array)}.each do |key,paths| paths.each do |e| new_key = "#{key}/#{File.dirname(e)}" path_hash[new_key] = e end path_hash.delete(key) end end end end
Version data entries
2 entries across 2 versions & 2 rubygems
Version | Path |
---|---|
cldwalker-lightning-0.2.0 | lib/lightning/completion_map.rb |
lightning-0.2.1 | lib/lightning/completion_map.rb |