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