public Expression transform()

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());
    }