in src/main/java/org/apache/sling/scripting/sightly/impl/compiler/frontend/ExpressionWrapper.java [53:80]
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());
}