in csharp/EPAM.Deltix.HdTime/FormatString.cs [47:98]
internal static void Parse(String fmt, ITarget target)
{
int fmtLength = fmt.Length;
StringBuilder sb = new StringBuilder(fmtLength);
bool literalMode = false, wasQuote = false;
for (int i = 0; i < fmtLength;)
{
char c = fmt[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[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.ToString());
sb.Length = 0;
}
target.AddField(c, n);
}
else
{
sb.Append(c);
}
}
if (sb.Length > 0)
target.AddString(sb.ToString());
}