diff options
| author | frosty <gabriel@bwaaa.monster> | 2026-04-23 01:08:36 -0400 |
|---|---|---|
| committer | frosty <gabriel@bwaaa.monster> | 2026-04-23 01:08:36 -0400 |
| commit | 62e2a6abbda3c660cc6c0c1ffc3836635eb615e1 (patch) | |
| tree | d4d852e8e49d987f224320c863a37cc577d944f0 | |
| parent | 8016cbdb7c190e6664a50560e3c8ea58f00fb31b (diff) | |
| parent | 75f4147fc8340eb22e22eabab869126da7697d44 (diff) | |
| download | beaker-62e2a6abbda3c660cc6c0c1ffc3836635eb615e1.tar.gz | |
| -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, ']'); |
