From 6e1ea494c5ec1c15476d1473d9e9d02312bc8756 Mon Sep 17 00:00:00 2001 From: M57 <41645758+Hy4ri@users.noreply.github.com> Date: Tue, 4 Aug 2026 18:18:52 +0300 Subject: [PATCH] =?UTF-8?q?=E2=9A=A1=20Optimize=20Regex=20compilation=20in?= =?UTF-8?q?=20ToolViewBuilder=20(#801)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * Extracted the inline regex in htmlPathFromInlineDiff to a pre-compiled private constant to optimize CPU utilization during high-frequency loop iterations. * Fix ktlint standard:multiline-expression-wrapping rule in ToolViewBuilder --- .../m57/hermescontrol/ui/chat/tool/ToolViewBuilder.kt | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/app/src/main/java/com/m57/hermescontrol/ui/chat/tool/ToolViewBuilder.kt b/app/src/main/java/com/m57/hermescontrol/ui/chat/tool/ToolViewBuilder.kt index f8cb3d23..5c6e7834 100644 --- a/app/src/main/java/com/m57/hermescontrol/ui/chat/tool/ToolViewBuilder.kt +++ b/app/src/main/java/com/m57/hermescontrol/ui/chat/tool/ToolViewBuilder.kt @@ -24,6 +24,12 @@ import kotlinx.serialization.json.JsonPrimitive * as a human summary instead of a raw JSON dump */ object ToolViewBuilder { + private val HTML_PATH_REGEX = + Regex( + "(?:^|\\s)(?:[ab]/)?([^\\s]+\\.html?)(?=\\s|$)", + RegexOption.IGNORE_CASE, + ) + // ── shared field helpers ───────────────────────────────────────────── private fun firstString( @@ -257,10 +263,7 @@ object ToolViewBuilder { private fun htmlPathFromInlineDiff(value: String): String { val cleaned = stripInlineDiffChrome(value) - for (match in Regex( - "(?:^|\\s)(?:[ab]/)?([^\\s]+\\.html?)(?=\\s|$)", - RegexOption.IGNORE_CASE, - ).findAll(cleaned)) { + for (match in HTML_PATH_REGEX.findAll(cleaned)) { val candidate = match.groupValues[1].trim() if (candidate.isNotEmpty()) {