class Torganiser::Scanner

Handles scanning a set of directories and files and returning any found episode files.

Public Class Methods

new(files, extensions, ignored) click to toggle source
# File lib/torganiser/scanner.rb, line 7
def initialize(files, extensions, ignored)
  file_query.add_extension extensions
  ignore ignored
  add_files files
end

Public Instance Methods

each() { |file| ... } click to toggle source
# File lib/torganiser/scanner.rb, line 13
def each
  all_files { |file| yield file unless ignored? file }
end

Private Instance Methods

add_file(file) click to toggle source
# File lib/torganiser/scanner.rb, line 54
def add_file(file)
  if File.file?(file)
    ordinary_files << file
  else
    file_query.add_directory file
  end
end
add_files(files) click to toggle source
# File lib/torganiser/scanner.rb, line 48
def add_files(files)
  files.each do |file|
    add_file file
  end
end
all_files() { |file| ... } click to toggle source
# File lib/torganiser/scanner.rb, line 19
def all_files
  ordinary_files.each do |file|
    yield file
  end
  directory_files.each do |file|
    yield file
  end
end
directory_files() click to toggle source
# File lib/torganiser/scanner.rb, line 40
def directory_files
  if file_query.empty?
    []
  else
    Dir[file_query.pattern].select { |file| File.file?(file) }
  end
end
file_query() click to toggle source
# File lib/torganiser/scanner.rb, line 66
def file_query
  @file_query ||= FileQuery.new
end
ignore(ignored) click to toggle source
# File lib/torganiser/scanner.rb, line 32
def ignore(ignored)
  ignored_patterns.concat([*ignored])
end
ignored?(file) click to toggle source
# File lib/torganiser/scanner.rb, line 28
def ignored?(file)
  @ignored_patterns.any? { |pattern| pattern.match file }
end
ignored_patterns() click to toggle source
# File lib/torganiser/scanner.rb, line 36
def ignored_patterns
  @ignored_patterns ||= []
end
ordinary_files() click to toggle source
# File lib/torganiser/scanner.rb, line 62
def ordinary_files
  @ordinary_files ||= []
end