-
Notifications
You must be signed in to change notification settings - Fork 0
/
ext.go
96 lines (90 loc) · 1.21 KB
/
ext.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
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
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
package main
import (
"sort"
"strings"
)
func presetAudioExts() []string {
return []string{
".aac",
".ac3",
".ape",
".au",
".dts",
".flac",
".m4a",
".mka",
".mp1",
".mp2",
".mp3",
".ogg",
".oma",
".ra",
".spx",
".wav",
".wma",
}
}
func presetVideoExts() []string {
return []string{
".3g2",
".3gp",
".a52",
".asf",
".avi",
".divx",
".dv",
".flv",
".f4v",
".gifv",
".ifo",
".iso",
".m1v",
".m2ts",
".m2v",
".m4v",
".mkv",
".mov",
".mp4",
".mpeg",
".mpeg1",
".mpeg2",
".mpeg4",
".mpg",
".mts",
".ogm",
".rm",
".rmvb",
".ts",
".vob",
".webm",
".wmv",
}
}
type extMatcher struct {
exts []string
}
func newExtMatcher(exts []string) *extMatcher {
normalized := make([]string, 0, len(exts))
for _, e := range exts {
if e == "" {
continue
}
if e[0] != '.' {
e = "." + e
}
normalized = append(normalized, strings.ToLower(e))
}
sort.Strings(normalized)
return &extMatcher{
exts: normalized,
}
}
func (m *extMatcher) Empty() bool {
return len(m.exts) == 0
}
func (m *extMatcher) Match(ext string) bool {
if i := sort.SearchStrings(m.exts, ext); i < len(m.exts) && m.exts[i] == ext {
return true
}
return false
}