diff options
| author | 2 * r + 2 * t <61896496+soramanew@users.noreply.github.com> | 2026-03-12 22:22:45 +1100 |
|---|---|---|
| committer | 2 * r + 2 * t <61896496+soramanew@users.noreply.github.com> | 2026-03-12 22:22:45 +1100 |
| commit | 11b30a0f696e3fce498f8d5fe1194b81746bcd83 (patch) | |
| tree | 04e712dea404e1454ca7705fa6ed1f73b6759051 /utils/Strings.qml | |
| parent | systemusage: combine chained replace calls into single regex (diff) | |
| download | caelestia-shell-11b30a0f696e3fce498f8d5fe1194b81746bcd83.tar.gz caelestia-shell-11b30a0f696e3fce498f8d5fe1194b81746bcd83.tar.bz2 caelestia-shell-11b30a0f696e3fce498f8d5fe1194b81746bcd83.zip | |
strings: cache compiled RegExp objects
Diffstat (limited to 'utils/Strings.qml')
| -rw-r--r-- | utils/Strings.qml | 10 |
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) |