internal static void Parse()

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());
		}