Search: Ignore escaped ":" in query parser
This commit is contained in:
parent
83daea69c3
commit
1321192eff
|
@ -61,7 +61,7 @@ func TestParseQueryString(t *testing.T) {
|
||||||
assert.Equal(t, float32(33.45343), form.Lat)
|
assert.Equal(t, float32(33.45343), form.Lat)
|
||||||
})
|
})
|
||||||
t.Run("valid query 2", func(t *testing.T) {
|
t.Run("valid query 2", func(t *testing.T) {
|
||||||
form := &PhotoSearch{Query: "chroma:200 title:\"test\" after:2018-01-15 favorite:true lng:33.45343166666667"}
|
form := &PhotoSearch{Query: "chroma:200 title:\"te:st\" after:2018-01-15 favorite:true lng:33.45343166666667"}
|
||||||
|
|
||||||
err := form.ParseQueryString()
|
err := form.ParseQueryString()
|
||||||
|
|
||||||
|
@ -72,7 +72,7 @@ func TestParseQueryString(t *testing.T) {
|
||||||
}
|
}
|
||||||
|
|
||||||
assert.Equal(t, uint8(200), form.Chroma)
|
assert.Equal(t, uint8(200), form.Chroma)
|
||||||
assert.Equal(t, "test", form.Title)
|
assert.Equal(t, "te:st", form.Title)
|
||||||
assert.Equal(t, time.Date(2018, 01, 15, 0, 0, 0, 0, time.UTC), form.After)
|
assert.Equal(t, time.Date(2018, 01, 15, 0, 0, 0, 0, time.UTC), form.After)
|
||||||
assert.Equal(t, float32(33.45343), form.Lng)
|
assert.Equal(t, float32(33.45343), form.Lng)
|
||||||
})
|
})
|
||||||
|
|
|
@ -139,7 +139,7 @@ func Unserialize(f SearchForm, q string) (result error) {
|
||||||
isKeyValue = false
|
isKeyValue = false
|
||||||
key = key[:0]
|
key = key[:0]
|
||||||
value = value[:0]
|
value = value[:0]
|
||||||
} else if char == ':' {
|
} else if char == ':' && !escaped {
|
||||||
isKeyValue = true
|
isKeyValue = true
|
||||||
} else if char == '"' {
|
} else if char == '"' {
|
||||||
escaped = !escaped
|
escaped = !escaped
|
||||||
|
|
Loading…
Reference in a new issue