Make label search working for umlauts

This commit is contained in:
Theresa Gresch 2019-12-15 13:29:18 +01:00
parent 67cf854ae8
commit 94c3f534be

View File

@ -1,7 +1,6 @@
package form
import (
"bytes"
"fmt"
"reflect"
"strconv"
@ -29,7 +28,7 @@ type LabelSearch struct {
}
func (f *LabelSearch) ParseQueryString() (result error) {
var key, value []byte
var key, value []rune
var escaped, isKeyValue bool
query := f.Query
@ -43,9 +42,9 @@ func (f *LabelSearch) ParseQueryString() (result error) {
for _, char := range query {
if unicode.IsSpace(char) && !escaped {
if isKeyValue {
fieldName := string(bytes.Title(bytes.ToLower(key)))
fieldName := strings.Title(string(key))
field := formValues.FieldByName(fieldName)
stringValue := string(bytes.ToLower(value))
stringValue := string(value)
if field.CanSet() {
switch field.Interface().(type) {
@ -90,7 +89,7 @@ func (f *LabelSearch) ParseQueryString() (result error) {
result = fmt.Errorf("unknown filter: %s", fieldName)
}
} else {
f.Query = string(bytes.ToLower(key))
f.Query = string(key)
}
escaped = false
@ -102,9 +101,9 @@ func (f *LabelSearch) ParseQueryString() (result error) {
} else if char == '"' {
escaped = !escaped
} else if isKeyValue {
value = append(value, byte(char))
value = append(value, unicode.ToLower(char))
} else {
key = append(key, byte(char))
key = append(key, unicode.ToLower(char))
}
}