in src/main/java/org/apache/sling/scripting/sightly/compiler/SightlyCompiler.java [89:132]
private SightlyCompiler(Set<String> additionalExpresionOptions) {
ArrayList<StreamTransformer> transformers = new ArrayList<>(5);
transformers.add(ConstantFolding.transformer());
transformers.add(DeadCodeRemoval.transformer());
transformers.add(SyntheticMapRemoval.TRANSFORMER);
transformers.add(UnusedVariableRemoval.TRANSFORMER);
transformers.add(CoalescingWrites.TRANSFORMER);
optimizer = new SequenceStreamTransformer(transformers);
// register plugins
plugins = new ArrayList<>(12);
plugins.add(new AttributePlugin());
plugins.add(new CallPlugin());
plugins.add(new ElementPlugin());
plugins.add(new IncludePlugin());
plugins.add(new ListPlugin());
plugins.add(new RepeatPlugin());
plugins.add(new ResourcePlugin());
plugins.add(new TemplatePlugin());
plugins.add(new TestPlugin());
plugins.add(new SetPlugin());
plugins.add(new TextPlugin());
plugins.add(new UnwrapPlugin());
plugins.add(new UsePlugin());
Collections.sort(plugins);
// register filters
filters = new ArrayList<>(5);
filters.add(I18nFilter.getInstance());
filters.add(FormatFilter.getInstance());
filters.add(JoinFilter.getInstance());
filters.add(URIManipulationFilter.getInstance());
filters.add(XSSFilter.getInstance());
Collections.sort(filters);
knownExpressionOptions = new HashSet<>(additionalExpresionOptions);
for (Filter filter : filters) {
knownExpressionOptions.addAll(filter.getOptions());
}
knownExpressionOptions.add(Syntax.CONTEXT_OPTION);
for (ExpressionContext context : ExpressionContext.values()) {
knownExpressionOptions.addAll(context.getOptions());
}
frontend = new SimpleFrontend(plugins, filters, knownExpressionOptions);
}