* mu_query_combine: refactor, reduce complexity
This commit is contained in:
@ -197,6 +197,22 @@ mu_query_xapian_as_string (MuQueryXapian *self, const char* searchexpr)
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
static gboolean
|
||||||
|
_needs_quotes (const char* str)
|
||||||
|
{
|
||||||
|
int i;
|
||||||
|
const char *keywords[] = {
|
||||||
|
"ANO", "OR", "NOT", "NEAR", "ADJ"
|
||||||
|
};
|
||||||
|
|
||||||
|
for (i = 0; i != G_N_ELEMENTS(keywords); ++i)
|
||||||
|
if (g_strcasecmp (str, keywords[i]) == 0)
|
||||||
|
return TRUE;
|
||||||
|
|
||||||
|
return FALSE;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
char*
|
char*
|
||||||
mu_query_xapian_combine (const gchar **params, gboolean connect_or)
|
mu_query_xapian_combine (const gchar **params, gboolean connect_or)
|
||||||
{
|
{
|
||||||
@ -220,10 +236,7 @@ mu_query_xapian_combine (const gchar **params, gboolean connect_or)
|
|||||||
if (params[i + 1])
|
if (params[i + 1])
|
||||||
cnx = connect_or ? " OR " : " AND ";
|
cnx = connect_or ? " OR " : " AND ";
|
||||||
|
|
||||||
do_quote = (strcasecmp (elm, "OR") == 0 ||
|
do_quote = _needs_quotes (elm);
|
||||||
strcasecmp (elm, "AND") == 0 ||
|
|
||||||
strcasecmp (elm, "NOT") == 0);
|
|
||||||
|
|
||||||
g_string_append_printf (str, "%s%s%s%s",
|
g_string_append_printf (str, "%s%s%s%s",
|
||||||
do_quote ? "\"" : "",
|
do_quote ? "\"" : "",
|
||||||
elm,
|
elm,
|
||||||
|
|||||||
Reference in New Issue
Block a user