From 9a83fc6be7dc9eb732ae583be9d2a6e7ea9288e6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Luca=20Kr=C3=B6ger?= Date: Mon, 7 Jun 2021 21:10:52 +0200 Subject: [PATCH] allow for regex and wildcard search MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Luca Kröger --- .../item-object-list/item-list-layout.tsx | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/src/renderer/components/item-object-list/item-list-layout.tsx b/src/renderer/components/item-object-list/item-list-layout.tsx index 647cbcaec9..80208d7317 100644 --- a/src/renderer/components/item-object-list/item-list-layout.tsx +++ b/src/renderer/components/item-object-list/item-list-layout.tsx @@ -171,7 +171,19 @@ export class ItemListLayout extends React.Component { return searchFilters.some(getTexts => { const sourceTexts: string[] = [getTexts(item)].flat().map(normalizeText); - return sourceTexts.some(source => searchTexts.some(search => source.includes(search))); + return searchTexts.some(search => { + if(search.startsWith("regex:")) { + const matcher = new RegExp(search.substring(6).trim()); + + return sourceTexts.some(source => matcher.test(source)); + } else if(search.indexOf("*") !== -1) { + const matcher = new RegExp(search.split("*").map(string => string.replace(/[.*+?^${}()|[\]\\]/g, "\\$&")).join(".*")); + + return sourceTexts.some(source => matcher.test(source)); + } else { + return sourceTexts.some(source => source.indexOf(search) !== -1); + } + }); }); }); }