1package gitignore 2 3import "strings" 4 5// Only benchmark use 6type fullScanPatterns struct { 7 absolute patterns 8 relative patterns 9} 10 11func newFullScanPatterns() *fullScanPatterns { 12 return &fullScanPatterns{ 13 absolute: patterns{}, 14 relative: patterns{}, 15 } 16} 17 18func (ps *fullScanPatterns) add(pattern string) { 19 if strings.HasPrefix(pattern, "/") { 20 ps.absolute.add(newPattern(pattern)) 21 } else { 22 ps.relative.add(newPattern(pattern)) 23 } 24} 25 26func (ps fullScanPatterns) match(path string, isDir bool) bool { 27 if ps.absolute.match(path, isDir) { 28 return true 29 } 30 return ps.relative.match(path, isDir) 31} 32