Fix matching

This commit is contained in:
Alexander Zobnin
2022-09-01 10:30:55 +03:00
parent 459722d0e4
commit 799875866a
2 changed files with 27 additions and 7 deletions

View File

@@ -148,7 +148,11 @@ func filterItemsByTag(items []*Item, filter string) ([]*Item, error) {
} }
for _, t := range tags { for _, t := range tags {
if re != nil { if re != nil {
if match, err := re.MatchString(t); match && err != nil { match, err := re.MatchString(t)
if err != nil {
return nil, err
}
if match {
filteredItems = append(filteredItems, i) filteredItems = append(filteredItems, i)
break break
} }
@@ -173,7 +177,11 @@ func filterItemsByQuery(items []*Item, filter string) ([]*Item, error) {
for _, i := range items { for _, i := range items {
name := i.Name name := i.Name
if re != nil { if re != nil {
if match, err := re.MatchString(name); match && err != nil { match, err := re.MatchString(name)
if err != nil {
return nil, err
}
if match {
filteredItems = append(filteredItems, i) filteredItems = append(filteredItems, i)
} }
} else if name == filter { } else if name == filter {
@@ -212,7 +220,11 @@ func filterAppsByQuery(items []Application, filter string) ([]Application, error
for _, i := range items { for _, i := range items {
name := i.Name name := i.Name
if re != nil { if re != nil {
if match, err := re.MatchString(name); match && err != nil { match, err := re.MatchString(name)
if err != nil {
return nil, err
}
if match {
filteredItems = append(filteredItems, i) filteredItems = append(filteredItems, i)
} }
} else if name == filter { } else if name == filter {
@@ -251,7 +263,11 @@ func filterHostsByQuery(items []Host, filter string) ([]Host, error) {
for _, i := range items { for _, i := range items {
name := i.Name name := i.Name
if re != nil { if re != nil {
if match, err := re.MatchString(name); match && err != nil { match, err := re.MatchString(name)
if err != nil {
return nil, err
}
if match {
filteredItems = append(filteredItems, i) filteredItems = append(filteredItems, i)
} }
} else if name == filter { } else if name == filter {
@@ -282,7 +298,11 @@ func filterGroupsByQuery(items []Group, filter string) ([]Group, error) {
for _, i := range items { for _, i := range items {
name := i.Name name := i.Name
if re != nil { if re != nil {
if match, err := re.MatchString(name); match && err != nil { match, err := re.MatchString(name)
if err != nil {
return nil, err
}
if match {
filteredItems = append(filteredItems, i) filteredItems = append(filteredItems, i)
} }
} else if name == filter { } else if name == filter {

View File

@@ -67,8 +67,8 @@ func splitKeyParams(paramStr string) []string {
func parseFilter(filter string) (*regexp2.Regexp, error) { func parseFilter(filter string) (*regexp2.Regexp, error) {
vaildREModifiers := "imncsxrde" vaildREModifiers := "imncsxrde"
regex := regexp.MustCompile(`^/(.+)/(\w*)$`) regex := regexp.MustCompile(`^/(.+)/([imncsxrde]*)$`)
flagRE := regexp.MustCompile("[" + vaildREModifiers + "]+") flagRE := regexp.MustCompile(fmt.Sprintf("[%s]+", vaildREModifiers))
matches := regex.FindStringSubmatch(filter) matches := regex.FindStringSubmatch(filter)
if len(matches) <= 1 { if len(matches) <= 1 {