private int handleFn()

in geronimo-microprofile-reporter/src/main/java/org/apache/geronimo/microprofile/reporter/storage/templating/TemplatingEngine.java [265:285]


    private int handleFn(final String name, final String template, final Function<String, String> templateLoader,
                         final Collection<Function<Object, String>> segments, final StringBuilder builder,
                         final char[] chars, final int currentIndex, final Function<String, String> impl) {
        final String value = builder.toString();
        segments.add(data -> value);
        builder.setLength(0);

        final int end = findEndingParenthesis(chars, currentIndex + name .length() + 2 /*@ and (*/ + 1);
        if (end < 0) {
            throw new IllegalArgumentException("Missing ')' token for @" + name + " at position " + currentIndex + " for:\n" + template);
        }
        final String toEscape = template.substring(currentIndex + name.length() + 2, end);
        segments.add(data -> {
            final String escapableValue = compileIfNeeded(toEscape, templateLoader).apply(data);
            if (escapableValue == null) {
                return "";
            }
            return impl.apply(escapableValue);
        });
        return end;
    }