From ad013fb8f5fe4b7a7cb14399fa768b05d32a77e5 Mon Sep 17 00:00:00 2001 From: eleksir Date: Tue, 31 Mar 2026 00:23:48 +0300 Subject: [PATCH] Cache regex evaluation in i3.go --- internal/lib/i3.go | 32 ++++++++++++++------------------ 1 file changed, 14 insertions(+), 18 deletions(-) diff --git a/internal/lib/i3.go b/internal/lib/i3.go index bd2802b..2db7e73 100644 --- a/internal/lib/i3.go +++ b/internal/lib/i3.go @@ -154,18 +154,16 @@ func HasWindows(className string, instanceName string) bool { func FindWindowInstance(regexpStr string) bool { var found = false + re, err := regexp.Compile(regexpStr) + if err != nil { + log.Printf("Unable to perform regexp match: %s", err) + + return false + } + f := func(key any, value any) bool { //nolint: revive keyStr := reflect.ValueOf(key).String() - re, err := regexp.Compile(regexpStr) // we do not want shit our pants and panic on - // erroneous regexp, we want log it to stderr, that it. - - if err != nil { - log.Printf("Unable to perform regexp match: %s", err) - - return true - } - if re.Match([]byte(keyStr)) { //nolint:mirror found = true @@ -185,18 +183,16 @@ func FindWindowInstance(regexpStr string) bool { func FindWindowClass(regexpStr string) bool { var found = false + re, err := regexp.Compile(regexpStr) + if err != nil { + log.Printf("Unable to perform regexp match: %s", err) + + return false + } + f := func(key any, value any) bool { //nolint: revive keyStr := reflect.ValueOf(key).String() - re, err := regexp.Compile(regexpStr) // we do not want shit our pants and panic on - // erroneous regexp, we want log it to stderr, that it. - - if err != nil { - log.Printf("Unable to perform regexp match: %s", err) - - return true - } - if re.Match([]byte(keyStr)) { //nolint:mirror found = true