diff --git a/file.go b/file.go index 3b74fa4..bf4d6e1 100644 --- a/file.go +++ b/file.go @@ -157,12 +157,14 @@ func (f FileFilters) types() []string { res = append(res, pattern) continue } - - ext := pattern[strings.LastIndexByte(pattern, '.')+1:] + dot := strings.LastIndexByte(pattern, '.') + if dot < 0 { + continue + } var escape bool var buf strings.Builder - for _, b := range []byte(removeClasses(ext)) { + for _, b := range []byte(removeClasses(pattern[dot+1:])) { switch { case escape: escape = false @@ -174,9 +176,7 @@ func (f FileFilters) types() []string { } buf.WriteByte(b) } - if buf.Len() > 0 { - res = append(res, buf.String()) - } + res = append(res, buf.String()) } } if res == nil { diff --git a/file_filter_test.go b/file_filter_test.go index 102fe75..96a655e 100644 --- a/file_filter_test.go +++ b/file_filter_test.go @@ -31,6 +31,7 @@ func TestFileFilters_simplify(t *testing.T) { }{ {[]string{``}, nil}, {[]string{`*.\?`}, nil}, + {[]string{`*.`}, []string{`*.`}}, {[]string{`*.png`}, []string{"*.png"}}, {[]string{`*.pn?`}, []string{"*.pn?"}}, {[]string{`*.pn;`}, []string{"*.pn?"}}, @@ -91,6 +92,7 @@ func TestFileFilters_types(t *testing.T) { want []string }{ {[]string{``}, nil}, + {[]string{`*.`}, []string{".", ""}}, {[]string{`*.png`}, []string{".", "png"}}, {[]string{`*.pn?`}, nil}, {[]string{`*.pn;`}, []string{".", "pn;"}},