summaryrefslogtreecommitdiff
path: root/utils
diff options
context:
space:
mode:
author2 * r + 2 * t <61896496+soramanew@users.noreply.github.com>2026-03-12 22:22:45 +1100
committer2 * r + 2 * t <61896496+soramanew@users.noreply.github.com>2026-03-12 22:22:45 +1100
commit11b30a0f696e3fce498f8d5fe1194b81746bcd83 (patch)
tree04e712dea404e1454ca7705fa6ed1f73b6759051 /utils
parentsystemusage: combine chained replace calls into single regex (diff)
downloadcaelestia-shell-11b30a0f696e3fce498f8d5fe1194b81746bcd83.tar.gz
caelestia-shell-11b30a0f696e3fce498f8d5fe1194b81746bcd83.tar.bz2
caelestia-shell-11b30a0f696e3fce498f8d5fe1194b81746bcd83.zip
strings: cache compiled RegExp objects
Diffstat (limited to 'utils')
-rw-r--r--utils/Strings.qml10
1 files changed, 8 insertions, 2 deletions
diff --git a/utils/Strings.qml b/utils/Strings.qml
index 1d0cc76..a91a0c0 100644
--- a/utils/Strings.qml
+++ b/utils/Strings.qml
@@ -3,12 +3,18 @@ pragma Singleton
import Quickshell
Singleton {
+ property var _regexCache: ({})
+
function testRegexList(filterList: list<string>, target: string): bool {
const regexChecker = /^\^.*\$$/;
for (const filter of filterList) {
- // If filter is a regex
if (regexChecker.test(filter)) {
- if ((new RegExp(filter)).test(target))
+ let re = _regexCache[filter];
+ if (!re) {
+ re = new RegExp(filter);
+ _regexCache[filter] = re;
+ }
+ if (re.test(target))
return true;
} else {
if (filter === target)