Jinjava: как заставить интерпретатор проверять сбалансированные фигурные скобки внутри блоков
Я хотел бы проверить правильность балансировки фигурных скобок в простых файлах на основе шаблонов jinja, например:
{
"resource_label_1" : "{{ resource_value_1 }}",
"resource_label_2" : "{{ resource_value_2 }}"
}
Я уже пробовал более одного варианта, например, установив значение validationMode и FailOnUnknownTokens в значение true, однако он не может его обнаружить. Я попытался использовать как parse(), так и resolveELExpression().
Jinjava jinjava = new Jinjava();
JinjavaInterpreter interpreter = jinjava.newInterpreter();
Context context = interpreter.getContext();
JinjavaInterpreter interpreter2 =
new JinjavaInterpreter(
jinjava,
context,
JinjavaConfig.newBuilder().withValidationMode(true).withFailOnUnknownTokens(true).build()
);
JinjavaInterpreter.pushCurrent(interpreter2);
// intentionally missing one closed curly bracket at the end of the string
String jinjia = " \"resource_label_1\" : \"{{ resource_value_1 }\" ";
interpreter2.resolveELExpression(jinjia, 123);
int errorSize = interpreter2.getErrors().size();
interpreter2.parse(jinjia);
errorSize = interpreter2.getErrors().size();
Никакой "ошибки" не обнаружилось. Нет необходимости в подстановке переменных, просто балансировка фигурных скобок. Конечно, существуют специальные решения, предлагающие реализовать собственный парсер, используя структуру данных стека, однако было бы неплохо, если бы интерпретатор jinjava выполнял такие проверки.
Пожалуйста, какие-нибудь предложения? Спасибо.