From 6bd72aad254c9820406cd597b5baa3a5285d3052 Mon Sep 17 00:00:00 2001 From: Greg Gauthier Date: Fri, 6 Mar 2026 18:39:56 +0000 Subject: [PATCH] refactor(recipe): improve subRe regexp and add explanatory comments Simplify the subRe regular expression by using a non-capturing group for the section labels instead of alternation, and switch the lookahead to a non-capturing group for consistency. Add comments to document the purpose of stepRe and subRe for better maintainability. --- internal/recipe/loader.go | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/internal/recipe/loader.go b/internal/recipe/loader.go index cc68f88..9ee03a3 100644 --- a/internal/recipe/loader.go +++ b/internal/recipe/loader.go @@ -12,8 +12,12 @@ import ( ) var ( + // stepRe finds every "### Step N: Title" heading stepRe = regexp.MustCompile(`(?m)^### Step (\d+): (.+)$`) - subRe = regexp.MustCompile(`(?m)^(\*\*Objective:\*\*|\*\*Instructions:\*\*|\*\*Expected output:\*\*)\s*(.+?)(?=\n\n|\n###|\z)`) + + // subRe finds the three labelled sections inside each step. + // We use a simple non-capturing group + word-boundary approach instead of lookahead. + subRe = regexp.MustCompile(`(?m)^(\*\*(?:Objective|Instructions|Expected output):\*\*)\s*(.+?)(?:\n\n|\n###|\z)`) ) // Load reads a recipe from disk and fully parses it.