From 1da7341a79651d28fbcc3d14b9176593c4231942 Mon Sep 17 00:00:00 2001 From: Tianon Gravi Date: Fri, 16 Jul 2021 15:34:01 -0700 Subject: [PATCH] Fix jq-template to properly count {{ }} pairs This fixes edge cases like: ``` {{ foo }} {{ bar }} {{ baz | buzz }} ``` --- scripts/jq-template.awk | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/scripts/jq-template.awk b/scripts/jq-template.awk index b0954bc..5ee111b 100644 --- a/scripts/jq-template.awk +++ b/scripts/jq-template.awk @@ -17,6 +17,18 @@ function jq_escape(str, # parameters return out } +# return the number of times needle appears in haystack +function num(haystack, needle, # parameters + ret, i ) # locals +{ + ret = 0 + while (i = index(haystack, needle)) { + ret++ + haystack = substr(haystack, i + length(needle)) + } + return ret +} + BEGIN { jq_expr_defs = "" jq_expr = "" @@ -76,7 +88,7 @@ function append_jq(expr) { agg_jq = agg_jq line line = "" - if (!index(agg_jq, CLOSE)) { + if (num(agg_jq, OPEN) > num(agg_jq, CLOSE)) { next }