public String format()

in src/main/java/org/apache/sling/api/request/builder/impl/FastMessageFormat.java [66:103]


    public String format(String pattern, Object... arguments) {
        if (arguments == null || arguments.length == 0) {
            return pattern;
        } else {
            if (pattern.indexOf('\'') != -1) {
                // Escaping is not supported, fall back
                return MessageFormat.format(pattern, arguments);
            } else {
                StringBuilder message = new StringBuilder();
                int previousEnd = 0;
                for (int i = 0; i < arguments.length; i++) {
                    String placeholder = '{' + String.valueOf(i);
                    int placeholderIndex = pattern.indexOf(placeholder);
                    // -1 or before previous placeholder || format element with type/style
                    if (placeholderIndex < previousEnd
                            || pattern.charAt(placeholderIndex + placeholder.length()) != '}') {
                        // Type, style and random order are not supported, fall back
                        return MessageFormat.format(pattern, arguments);
                    } else {
                        // Format argument if necessary
                        Object argument = arguments[i];
                        if (argument instanceof Number) {
                            argument = getNumberFormat().format(argument);
                        } else if (argument instanceof Date) {
                            argument = getDateFormat().format(argument);
                        }

                        // Append previous part of the string and formatted argument
                        message.append(pattern.substring(previousEnd, placeholderIndex));
                        message.append(argument);
                        previousEnd = placeholderIndex + placeholder.length() + 1;
                    }
                }
                message.append(pattern.substring(previousEnd, pattern.length()));
                return message.toString();
            }
        }
    }