Sha256: fbb3cef313ada00b13d5c39dcbef61e72061c4842c3d90e92e78bfa10572ec02
Contents?: true
Size: 1.94 KB
Versions: 3
Compression:
Stored size: 1.94 KB
Contents
module Jim # Index managages a list of directories which are searched to find requirements class Index attr_reader :directories def initialize(*directories) @directories = [directories].flatten.compact @jimhome_re = /#{Pathname.new(@directories.first).expand_path.to_s}/ end def add(directory) @directories.unshift directory end def list(search = nil) list = {} each_file_in_index('.js') do |filename| if /lib\/([^\/\-]+)-([\d\w\.\-]+)\/.+/.match filename name = $1 version = $2 else name, version = Jim::VersionParser.parse_filename(filename) end if name && version list[name] ||= [] list[name] << [version, filename] end end if search search = /#{search}/i list = list.find_all {|lib| lib[0] =~ search } end list.sort end def find(name, version = nil) name = Pathname.new(name) stem = name.basename ext = '.js' possible_paths = if version [ /#{stem}-#{version}\/#{name}#{ext}$/, /#{name}-#{version}#{ext}$/ ] else [ /#{name}#{ext}/, /#{name}-[\d\w\.\-]+#{ext}/ ] end final = false each_file_in_index(ext) do |filename| possible_paths.each do |p| if File.file?(filename) && p.match(filename) final = Pathname.new(filename).expand_path block_given? ? yield(final) : break end end break if final && !block_given? end final end def in_jimhome?(path) !!(path.to_s =~ @jimhome_re) end def find_all(name, version = nil) matched = [] find(name, version) {|p| matched << p } matched end def each_file_in_index(ext, &block) Jim.each_path_in_directories(@directories, ext, [], &block) end end end
Version data entries
3 entries across 3 versions & 1 rubygems
Version | Path |
---|---|
jim-0.2.3 | lib/jim/index.rb |
jim-0.2.2 | lib/jim/index.rb |
jim-0.2.1 | lib/jim/index.rb |