diff options
| author | frosty <gabriel@bwaaa.monster> | 2026-04-14 19:20:29 -0400 |
|---|---|---|
| committer | frosty <gabriel@bwaaa.monster> | 2026-04-14 19:20:29 -0400 |
| commit | 75f4147fc8340eb22e22eabab869126da7697d44 (patch) | |
| tree | 272da554d7d01c7c08eff0988347778bd66030e7 | |
| parent | 80caa6b317fdde4f3223648da709d184438a5a08 (diff) | |
| download | beaker-75f4147fc8340eb22e22eabab869126da7697d44.tar.gz | |
feat: support array index access in if statementsindev
| -rw-r--r-- | src/template.c | 16 |
1 files changed, 16 insertions, 0 deletions
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, ']'); |
