[string] Match everything with an empty pattern and -e
I.e. `string match --entire "" -- banana` used to match nothing, now it matches everything. Fixes #4971.
This commit is contained in:
parent
d44c21b580
commit
3ba74b3195
@ -628,7 +628,8 @@ class wildcard_matcher_t : public string_matcher_t {
|
||||
wcpattern[i] = towlower(wcpattern[i]);
|
||||
}
|
||||
}
|
||||
if (opts.entire && !wcpattern.empty()) {
|
||||
if (opts.entire) {
|
||||
// If the pattern is empty, this becomes one ANY_STRING that matches everything.
|
||||
if (wcpattern.front() != ANY_STRING) wcpattern.insert(0, 1, ANY_STRING);
|
||||
if (wcpattern.back() != ANY_STRING) wcpattern.push_back(ANY_STRING);
|
||||
}
|
||||
|
@ -283,6 +283,9 @@ string repeat -l fakearg
|
||||
####################
|
||||
# string match --entire -r "a*b[xy]+" abc abxc bye aaabyz kaabxz abbxy abcx caabxyxz
|
||||
|
||||
####################
|
||||
# string match --entire "" -- banana
|
||||
|
||||
####################
|
||||
# string match -r "a*b[xy]+" abc abxc bye aaabyz kaabxz abbxy abcx caabxyxz
|
||||
|
||||
|
@ -289,6 +289,10 @@ logmsg 'string match --entire -r "a*b[xy]+" abc abxc bye aaabyz kaabxz abbxy abc
|
||||
string match --entire -r "a*b[xy]+" abc abxc bye aaabyz kaabxz abbxy abcx caabxyxz
|
||||
or echo exit 1
|
||||
|
||||
logmsg 'string match --entire "" -- banana'
|
||||
string match --entire "" -- banana
|
||||
or echo exit 1
|
||||
|
||||
logmsg 'string match -r "a*b[xy]+" abc abxc bye aaabyz kaabxz abbxy abcx caabxyxz'
|
||||
string match -r "a*b[xy]+" abc abxc bye aaabyz kaabxz abbxy abcx caabxyxz
|
||||
or echo exit 1
|
||||
|
@ -384,6 +384,10 @@ kaabxz
|
||||
abbxy
|
||||
caabxyxz
|
||||
|
||||
####################
|
||||
# string match --entire "" -- banana
|
||||
banana
|
||||
|
||||
####################
|
||||
# string match -r "a*b[xy]+" abc abxc bye aaabyz kaabxz abbxy abcx caabxyxz
|
||||
abx
|
||||
|
Loading…
x
Reference in New Issue
Block a user