aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/template.c16
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, ']');