class Filters::GitIgnore

Attributes

globs[R]
negative_globs[R]

Public Class Methods

new(patterns = []) click to toggle source
# File lib/filters/git_ignore.rb, line 10
def initialize(patterns = [])


  @globs = [] 
  @negative_globs = []

  patterns.each do |pattern|

    pattern.strip!

    next if /^\#/.match(pattern)
   
    if /^\\\#/.match(pattern)
      add_globs Sftp::Sync::GlobBuilder.new(pattern.slice(1,pattern.length - 1))
    else
       add_globs Sftp::Sync::GlobBuilder.new(pattern)
    end

  end

end

Public Instance Methods

match(filename) click to toggle source
# File lib/filters/git_ignore.rb, line 33
def match(filename)


  @globs.each do |glob|
    if File.fnmatch(glob, filename,  File::FNM_PATHNAME) #  removeing path thing? (or be mor specific w/ glob)


      @negative_globs.each do |n_glob|
        return false if File.fnmatch(n_glob, filename,  File::FNM_PATHNAME)
      end

      return true 

    end
  end
  false
end

Private Instance Methods

add_globs(builder) click to toggle source
# File lib/filters/git_ignore.rb, line 53
def add_globs(builder)

  if builder.negative?
    @negative_globs = (@negative_globs + builder.globs).uniq
  else
    @globs = (@globs + builder.globs).uniq
  end

end