static void parse()

in java/main/src/main/java/com/epam/deltix/hdtime/FormatString.java [44:87]


    static void parse(final String fmt, final Target target) {
        int fmtLength = fmt.length();
        StringBuilder sb = new StringBuilder(fmtLength);
        boolean literalMode = false, wasQuote = false;

        for (int i = 0; i < fmtLength;) {
            char c = fmt.charAt(i++);
            if ('\'' == c) {
                literalMode ^= true;
                if (false == (wasQuote ^= true))
                    sb.append('\'');

                continue;
            }

            wasQuote = false;
            int maxLen;
            if (!literalMode && (maxLen = target.fieldLength(c)) > 0) {
                int n = i;
                for (; n < fmtLength && fmt.charAt(n) == c; ++n) {}
                n -= i;
                i += n++;
                if (n > maxLen) {
                    char padding = target.paddingForField(c);
                    for (int j = 0; j < n - maxLen; j++)
                        sb.append(padding);

                    n = maxLen;
                }

                if (sb.length() > 0) {
                    target.addString(sb);
                    sb.setLength(0);
                }

                target.addField(c, n);
            } else {
                sb.append(c);
            }
        }

        if (sb.length() > 0)
            target.addString(sb);
    }