From ac3132e541d7d2a94daef7b25e2c1f4f4322b123 Mon Sep 17 00:00:00 2001 From: Kovid Goyal Date: Thu, 18 Jan 2018 12:33:07 +0530 Subject: [PATCH] Initial stab at supporting smart quotes as delimiters in the search query parser --- src/calibre/utils/search_query_parser.py | 41 ++++++++++++++---------- 1 file changed, 24 insertions(+), 17 deletions(-) diff --git a/src/calibre/utils/search_query_parser.py b/src/calibre/utils/search_query_parser.py index 5b5dd570ff..f9c8f78c6b 100644 --- a/src/calibre/utils/search_query_parser.py +++ b/src/calibre/utils/search_query_parser.py @@ -142,14 +142,16 @@ class Parser(object): WORD = 2 QUOTED_WORD = 3 EOF = 4 + REPLACEMENTS = tuple((u'\\' + x, unichr(i + 1)) for i, x in enumerate(ur'\"()“”')) # Had to translate named constants to numeric values lex_scanner = re.Scanner([ - (r'[()]', lambda x,t: (Parser.OPCODE, t)), - (r'@.+?:[^")\s]+', lambda x,t: (Parser.WORD, unicode(t))), - (r'[^"()\s]+', lambda x,t: (Parser.WORD, unicode(t))), - (r'".*?((?