From 75f4147fc8340eb22e22eabab869126da7697d44 Mon Sep 17 00:00:00 2001 From: frosty Date: Tue, 14 Apr 2026 19:20:29 -0400 Subject: feat: support array index access in if statements --- src/template.c | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/src/template.c b/src/template.c index 0937b66..cf0e8ea 100644 --- a/src/template.c +++ b/src/template.c @@ -548,6 +548,13 @@ static bool evaluate_condition(const Condition *cond, TemplateContext *ctx) { return false; } var_value = ""; + } else if (var->type == CONTEXT_TYPE_STRING_ARRAY && cond->compare_index >= 0) { + if (cond->compare_index >= 0 && + cond->compare_index < var->value.string_array_data.count) { + var_value = var->value.string_array_data.values[cond->compare_index]; + } else { + var_value = ""; + } } else if (var->type == CONTEXT_TYPE_STRING) { var_value = var->value.string_val; } else { @@ -744,6 +751,15 @@ static Condition parse_condition(const char *condition_str) { end--; } + char *var_bracket = strchr(cond.var_name, '['); + if (var_bracket != NULL) { + char *close_bracket = strchr(var_bracket, ']'); + if (close_bracket != NULL) { + *var_bracket = '\0'; + cond.compare_index = atoi(var_bracket + 1); + } + } + char *bracket = strchr(cond.compare_value, '['); if (bracket != NULL) { char *close_bracket = strchr(bracket, ']'); -- cgit v1.2.3