mirror of
https://github.com/go-gitea/gitea
synced 2024-09-19 18:26:04 +00:00
08bf443016
* Inital routes to git refs api * Git refs API implementation * Update swagger * Fix copyright * Make swagger happy add basic test * Fix test * Fix test again :)
31 lines
934 B
Go
31 lines
934 B
Go
package gitignore
|
|
|
|
// Matcher defines a global multi-pattern matcher for gitignore patterns
|
|
type Matcher interface {
|
|
// Match matches patterns in the order of priorities. As soon as an inclusion or
|
|
// exclusion is found, not further matching is performed.
|
|
Match(path []string, isDir bool) bool
|
|
}
|
|
|
|
// NewMatcher constructs a new global matcher. Patterns must be given in the order of
|
|
// increasing priority. That is most generic settings files first, then the content of
|
|
// the repo .gitignore, then content of .gitignore down the path or the repo and then
|
|
// the content command line arguments.
|
|
func NewMatcher(ps []Pattern) Matcher {
|
|
return &matcher{ps}
|
|
}
|
|
|
|
type matcher struct {
|
|
patterns []Pattern
|
|
}
|
|
|
|
func (m *matcher) Match(path []string, isDir bool) bool {
|
|
n := len(m.patterns)
|
|
for i := n - 1; i >= 0; i-- {
|
|
if match := m.patterns[i].Match(path, isDir); match > NoMatch {
|
|
return match == Exclude
|
|
}
|
|
}
|
|
return false
|
|
}
|