in src/main/java/org/apache/sling/scripting/sightly/impl/compiler/frontend/ExpressionWrapper.java [53:79]
public Expression transform(
Interpolation interpolation, MarkupContext markupContext, ExpressionContext expressionContext) {
ArrayList<ExpressionNode> nodes = new ArrayList<>();
HashMap<String, ExpressionNode> options = new HashMap<>();
for (Fragment fragment : interpolation.getFragments()) {
if (fragment.isString()) {
nodes.add(new StringConstant(fragment.getText()));
} else {
Expression expression = fragment.getExpression();
if (AbstractFilter.NON_PARAMETRIZABLE_CONTEXTS.contains(expressionContext)) {
expression.getOptions().keySet().stream()
.filter(option -> !knownOptions.contains(option))
.forEach(unknownOption -> stream.warn(new PushStream.StreamMessage(
String.format("Unknown option '%s'.", unknownOption), expression.getRawText())));
}
Expression transformed = adjustToContext(expression, markupContext, expressionContext);
nodes.add(transformed.getRoot());
options.putAll(transformed.getOptions());
}
}
ExpressionNode root = join(nodes);
if (interpolation.size() > 1) {
// context must not be calculated by merging
options.remove(Syntax.CONTEXT_OPTION);
}
return new Expression(root, options, interpolation.getContent());
}