on master help sign in
[mod] query parsing refactor vol.1
commit7f45e8a562ea6a57ab9126b99cba87b9a40bfaa7 authorasciimoo <asciimoo@gmail.com> dateSun 9 Feb 2014, 01:07 (13 years ago) parent8305da3
1 file changed+25−20
searx/search.py+25−20
searx/search.py+25−20
@@ -13,7 +13,6 @@ class Search(object):
1313 self.query = None
1414 self.engines = []
1515 self.categories = []
16− query_engines = []
1716 self.paging = False
1817 self.pageno = 1
1918 self.lang = 'all'
@@ -46,25 +45,7 @@ class Search(object):
4645
4746 self.pageno = int(pageno_param)
4847
49− query_parts = self.query.split()
50− if query_parts[0].startswith('!'):
51− prefix = query_parts[0][1:].replace('_', ' ')
52− if prefix in engine_shortcuts\
53− and not engine_shortcuts[prefix] in self.blocked_engines:
54− self.engines.append({'category': 'none',
55− 'name': engine_shortcuts[prefix]})
56− elif prefix in engines\
57− and not prefix in self.blocked_engines:
58− self.engines.append({'category': 'none',
59− 'name': prefix})
60− elif prefix in categories:
61− self.engines.extend({'category': prefix,
62− 'name': engine.name}
63− for engine in categories[prefix]
64− if not engine in self.blocked_engines)
65−
66− if len(query_engines):
67− self.query = self.query.replace(query_parts[0], '', 1).strip()
48+ self.parse_query()
6849
6950 self.categories = []
7051
@@ -92,3 +73,27 @@ class Search(object):
9273 'name': x.name}
9374 for x in categories[categ]
9475 if not x.name in self.blocked_engines)
76+
77+ def parse_query(self):
78+ query_parts = self.query.split()
79+ modified = False
80+ if query_parts[0].startswith('!'):
81+ prefix = query_parts[0][1:].replace('_', ' ')
82+ if prefix in engine_shortcuts\
83+ and not engine_shortcuts[prefix] in self.blocked_engines:
84+ modified = True
85+ self.engines.append({'category': 'none',
86+ 'name': engine_shortcuts[prefix]})
87+ elif prefix in engines\
88+ and not prefix in self.blocked_engines:
89+ modified = True
90+ self.engines.append({'category': 'none',
91+ 'name': prefix})
92+ elif prefix in categories:
93+ modified = True
94+ self.engines.extend({'category': prefix,
95+ 'name': engine.name}
96+ for engine in categories[prefix]
97+ if not engine in self.blocked_engines)
98+ if modified:
99+ self.query = self.query.replace(query_parts[0], '', 1).strip()