forked from Icycoide/searxng
[fix] external bangs: don't overwrite Bangs in data trie
Bangs with a `*` suffix (e.g. `!!d*`) overwrite Bangs with the same prefix (e.g. `!!d`) [1]. This can be avoid when a non printable character is used to tag a LEAF_KEY. [1] https://github.com/searxng/searxng/pull/740#issuecomment-1010411888 Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
This commit is contained in:
parent
6d7e86eece
commit
7cdd31440e
3 changed files with 37 additions and 25 deletions
|
@ -2,6 +2,8 @@
|
|||
|
||||
from searx.data import EXTERNAL_BANGS
|
||||
|
||||
LEAF_KEY = chr(16)
|
||||
|
||||
|
||||
def get_node(external_bangs_db, bang):
|
||||
node = external_bangs_db['trie']
|
||||
|
@ -26,8 +28,8 @@ def get_bang_definition_and_ac(external_bangs_db, bang):
|
|||
if k.startswith(after):
|
||||
bang_ac_list.append(before + k)
|
||||
elif isinstance(node, dict):
|
||||
bang_definition = node.get('*')
|
||||
bang_ac_list = [before + k for k in node.keys() if k != '*']
|
||||
bang_definition = node.get(LEAF_KEY)
|
||||
bang_ac_list = [before + k for k in node.keys() if k != LEAF_KEY]
|
||||
elif isinstance(node, str):
|
||||
bang_definition = node
|
||||
bang_ac_list = []
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue