Method: VMC::Cli::FileHelper::SYSIgnore#match

Defined in:
lib/cli/file_helper.rb

#match(pattern, filename) ⇒ Object



48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
# File 'lib/cli/file_helper.rb', line 48

def match(pattern,filename)

  filename = filename.sub(/^#{@project_root}\//,'') # remove any project directory prefix

  return false if pattern =~ /^\s*$/ # ignore blank lines

  return false if pattern =~ /^#/ # lines starting with # are comments

  return false if pattern =~ /^!/ # lines starting with ! are negated

  if pattern =~ /\/$/ 
    # pattern ending in a slash should ignore directory and all its children
    dirname = pattern.sub(/\/$/,'')
    return filename == dirname || filename =~ /^#{dirname}\/.*$/
  end

  if pattern =~ /^\//
    parts = filename.split('/')
    return File.fnmatch(pattern.sub(/^\//,''),parts[0])
  end

  if pattern.include? '/'
    return File.fnmatch(pattern,filename)
  end

  File.fnmatch(pattern,filename,File::FNM_PATHNAME)
end