.oO SearXNG Developer Documentation Oo.
Loading...
Searching...
No Matches
searx.query.BangParser Class Reference
Inheritance diagram for searx.query.BangParser:
Collaboration diagram for searx.query.BangParser:

Public Member Functions

 __call__ (self, raw_value)
Public Member Functions inherited from searx.query.QueryPartParser
 __init__ (self, raw_text_query, enable_autocomplete)
 __call__ (self, raw_value)

Static Public Member Functions

 check (raw_value)

Protected Member Functions

 _parse (self, value)
 _autocomplete (self, first_char, value)
Protected Member Functions inherited from searx.query.QueryPartParser
 _add_autocomplete (self, value)

Additional Inherited Members

Public Attributes inherited from searx.query.QueryPartParser
 raw_text_query = raw_text_query
 enable_autocomplete = enable_autocomplete

Detailed Description

Definition at line 178 of file query.py.

Member Function Documentation

◆ __call__()

searx.query.BangParser.__call__ ( self,
raw_value )

Definition at line 184 of file query.py.

184 def __call__(self, raw_value):
185 value = raw_value[1:].replace('-', ' ').replace('_', ' ').lower()
186 found = self._parse(value) if len(value) > 0 else False
187 if found and raw_value[0] == '!':
188 self.raw_text_query.specific = True
189 if self.enable_autocomplete:
190 self._autocomplete(raw_value[0], value)
191 return found
192

References _parse(), searx.query.ExternalBangParser._parse(), searx.query.LanguageParser._parse(), searx.query.TimeoutParser._parse(), and searx.query.QueryPartParser.raw_text_query.

Here is the call graph for this function:

◆ _autocomplete()

searx.query.BangParser._autocomplete ( self,
first_char,
value )
protected

Definition at line 216 of file query.py.

216 def _autocomplete(self, first_char, value):
217 if not value:
218 # show some example queries
219 for suggestion in ['images', 'wikipedia', 'osm']:
220 if suggestion not in self.raw_text_query.disabled_engines or suggestion in categories:
221 self._add_autocomplete(first_char + suggestion)
222 return
223
224 # check if query starts with category name
225 for category in categories:
226 if category.startswith(value):
227 self._add_autocomplete(first_char + category.replace(' ', '_'))
228
229 # check if query starts with engine name
230 for engine in engines:
231 if engine.startswith(value):
232 self._add_autocomplete(first_char + engine.replace(' ', '_'))
233
234 # check if query starts with engine shortcut
235 for engine_shortcut in engine_shortcuts:
236 if engine_shortcut.startswith(value):
237 self._add_autocomplete(first_char + engine_shortcut)
238
239

References searx.query.QueryPartParser._add_autocomplete(), and searx.query.QueryPartParser.raw_text_query.

Here is the call graph for this function:

◆ _parse()

searx.query.BangParser._parse ( self,
value )
protected

Definition at line 193 of file query.py.

193 def _parse(self, value):
194 # check if prefix is equal with engine shortcut
195 if value in engine_shortcuts: # pylint: disable=consider-using-get
196 value = engine_shortcuts[value]
197
198 # check if prefix is equal with engine name
199 if value in engines:
200 self.raw_text_query.enginerefs.append(EngineRef(value, 'none'))
201 return True
202
203 # check if prefix is equal with category name
204 if value in categories:
205 # using all engines for that search, which
206 # are declared under that category name
207 self.raw_text_query.enginerefs.extend(
208 EngineRef(engine.name, value)
209 for engine in categories[value]
210 if (engine.name, value) not in self.raw_text_query.disabled_engines
211 )
212 return True
213
214 return False
215

References searx.query.QueryPartParser.raw_text_query.

Referenced by __call__().

Here is the caller graph for this function:

◆ check()

searx.query.BangParser.check ( raw_value)
static
Check if raw_value can be parsed

Reimplemented from searx.query.QueryPartParser.

Definition at line 180 of file query.py.

180 def check(raw_value):
181 # make sure it's not any bang with double '!!'
182 return raw_value[0] == '!' and (len(raw_value) < 2 or raw_value[1] != '!')
183

The documentation for this class was generated from the following file:
  • /home/andrew/Documents/code/public/searxng/searx/query.py