filter: document recursive wildcards

Match/ChildMatch accept a ** pattern which is not noted in the doc
string, nor do any of the docs or tests specify whether the match is
greedy (i.e., can 'foo/**/bar' match paths with additional intermediate
bar directories?).

Add a note to the doc string and add test cases for greedy matches.
This commit is contained in:
Michael Pratt
2017-09-04 14:38:48 -07:00
parent 8c40ae5a03
commit 92eb1cbffd
2 changed files with 10 additions and 0 deletions

View File

@@ -17,6 +17,10 @@ var ErrBadString = errors.New("filter.Match: string is empty")
//
// Pattern can be a combination of patterns suitable for filepath.Match, joined
// by filepath.Separator.
//
// In addition patterns suitable for filepath.Match, pattern accepts a
// recursive wildcard '**', which greedily matches an arbitrary number of
// intermediate directories.
func Match(pattern, str string) (matched bool, err error) {
if pattern == "" {
return true, nil
@@ -46,6 +50,10 @@ func Match(pattern, str string) (matched bool, err error) {
//
// Pattern can be a combination of patterns suitable for filepath.Match, joined
// by filepath.Separator.
//
// In addition patterns suitable for filepath.Match, pattern accepts a
// recursive wildcard '**', which greedily matches an arbitrary number of
// intermediate directories.
func ChildMatch(pattern, str string) (matched bool, err error) {
if pattern == "" {
return true, nil