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.