class Drydock::IgnorefileDefinition

Public Class Methods

new(file_or_filename, dotfiles: false) click to toggle source
# File lib/drydock/ignorefile_definition.rb, line 16
def initialize(file_or_filename, dotfiles: false)
  @dotfiles = dotfiles

  if file_or_filename.respond_to?(:readlines)
    patterns = Array(file_or_filename.readlines)
  else
    patterns = File.exist?(file_or_filename) ? File.readlines(file_or_filename) : []
  end

  @rules = patterns.map do |pattern|
    pattern = pattern.chomp
    if pattern.start_with?('!')
      Rule.new(pattern.slice(1..-1), true)
    else
      Rule.new(pattern, false)
    end
  end
end

Public Instance Methods

match?(filename) click to toggle source
# File lib/drydock/ignorefile_definition.rb, line 35
def match?(filename)
  return false if excludes?(filename)
  return true if includes?(filename)
  return true if is_dotfile?(filename)
  return false
end

Private Instance Methods

excludes?(filename) click to toggle source
# File lib/drydock/ignorefile_definition.rb, line 44
def excludes?(filename)
  @rules.select { |rule| rule.exclude? }.any? do |rule|
    rule.match?(filename)
  end
end
includes?(filename) click to toggle source
# File lib/drydock/ignorefile_definition.rb, line 50
def includes?(filename)
  @rules.select { |rule| !rule.exclude? }.any? do |rule|
    rule.match?(filename)
  end
end
is_dotfile?(filename) click to toggle source
# File lib/drydock/ignorefile_definition.rb, line 56
def is_dotfile?(filename)
  @dotfiles && filename.start_with?('.') && filename.size > 1
end