Sha256: 50d4a07cb5f95480abcc78082c09ba4b45b1cb90efa0e286abcfd7743edf9469

Contents?: true

Size: 787 Bytes

Versions: 4

Compression:

Stored size: 787 Bytes

Contents

class Dir

  def self.tags(pattern)
    files = {}
    Dir.glob(pattern).each do |file|
      tags = File.tags(file)
      files.merge!({file => tags}) unless tags.empty?
    end
    files
  end

  def self.taglob(pattern,tags)
    return glob(pattern) if tags.nil?
    return Dir.tag_or(pattern,*tags.split('|')) if tags.include?('|') 
    Dir.tag_and(pattern,*tags.split(',')) 
  end

  def self.tag_and(pattern, *tags)
    tagged_files = []
    self.tags(pattern).each do |file,parsed_tags|
      tagged_files << file if (tags - parsed_tags).empty?
    end
    tagged_files
  end
  
  def self.tag_or(pattern, *tags)
    tagged_files = []
    self.tags(pattern).each do |file,parsed_tags|
      tagged_files << file if !(tags & parsed_tags).empty?
    end
    tagged_files
  end

end

Version data entries

4 entries across 4 versions & 2 rubygems

Version Path
scudco-taglob-1.1.1 lib/taglob/extensions/dir.rb
scudco-taglob-1.1.2 lib/taglob/extensions/dir.rb
taglob-1.1.2 lib/taglob/extensions/dir.rb
taglob-1.1.1 lib/taglob/extensions/dir.rb