YTSFlix_Go/vendor/gopkg.in/h2non/filetype.v1/matchers/matchers.go
2018-11-04 15:58:15 +01:00

45 lines
972 B
Go

package matchers
import "gopkg.in/h2non/filetype.v1/types"
// Internal shortcut to NewType
var newType = types.NewType
// Matcher function interface as type alias
type Matcher func([]byte) bool
// Type interface to store pairs of type with its matcher function
type Map map[types.Type]Matcher
// Type specific matcher function interface
type TypeMatcher func([]byte) types.Type
// Store registered file type matchers
var Matchers = make(map[types.Type]TypeMatcher)
// Create and register a new type matcher function
func NewMatcher(kind types.Type, fn Matcher) TypeMatcher {
matcher := func(buf []byte) types.Type {
if fn(buf) {
return kind
}
return types.Unknown
}
Matchers[kind] = matcher
return matcher
}
func register(matchers ...Map) {
for _, m := range matchers {
for kind, matcher := range m {
NewMatcher(kind, matcher)
}
}
}
func init() {
// Arguments order is intentional
register(Image, Video, Audio, Font, Document, Archive)
}