// Copyright 2024 The Gitea Authors. All rights reserved.
// SPDX-License-Identifier: MIT

package setting

import "github.com/gobwas/glob"

type GlobMatcher struct {
	compiledGlob  glob.Glob
	patternString string
}

var _ glob.Glob = (*GlobMatcher)(nil)

func (g *GlobMatcher) Match(s string) bool {
	return g.compiledGlob.Match(s)
}

func (g *GlobMatcher) PatternString() string {
	return g.patternString
}

func GlobMatcherCompile(pattern string, separators ...rune) (*GlobMatcher, error) {
	g, err := glob.Compile(pattern, separators...)
	if err != nil {
		return nil, err
	}
	return &GlobMatcher{
		compiledGlob:  g,
		patternString: pattern,
	}, nil
}