From 7bd7153285da708466e92f37bc91bb02731c6905 Mon Sep 17 00:00:00 2001 From: Sam Coe Date: Thu, 16 Mar 2023 09:19:26 +1100 Subject: [PATCH] Fix multiword keyword quoting for search commands (#7170) --- pkg/search/query.go | 7 ++++++- pkg/search/query_test.go | 11 +++++++++-- 2 files changed, 15 insertions(+), 3 deletions(-) diff --git a/pkg/search/query.go b/pkg/search/query.go index 192750f35..fab6305f6 100644 --- a/pkg/search/query.go +++ b/pkg/search/query.go @@ -147,7 +147,12 @@ func formatQualifiers(qs Qualifiers) []string { func formatKeywords(ks []string) []string { for i, k := range ks { - ks[i] = quote(k) + before, after, found := strings.Cut(k, ":") + if !found { + ks[i] = quote(k) + } else { + ks[i] = fmt.Sprintf("%s:%s", before, quote(after)) + } } return ks } diff --git a/pkg/search/query_test.go b/pkg/search/query_test.go index c2b2d8605..dacc033f7 100644 --- a/pkg/search/query_test.go +++ b/pkg/search/query_test.go @@ -47,7 +47,14 @@ func TestQueryString(t *testing.T) { query: Query{ Keywords: []string{"quote keywords"}, }, - out: "\"quote keywords\"", + out: `"quote keywords"`, + }, + { + name: "quotes keywords that are qualifiers", + query: Query{ + Keywords: []string{"quote:keywords", "quote:multiword keywords"}, + }, + out: `quote:keywords quote:"multiword keywords"`, }, { name: "quotes qualifiers", @@ -56,7 +63,7 @@ func TestQueryString(t *testing.T) { Topic: []string{"quote qualifier"}, }, }, - out: "topic:\"quote qualifier\"", + out: `topic:"quote qualifier"`, }, } for _, tt := range tests {