public void TextNavigator_IsWhiteSpace_1()
        {
            const string  text      = " A\t";
            TextNavigator navigator = new TextNavigator(text);

            Assert.IsTrue(navigator.IsWhiteSpace());
            navigator.ReadChar();
            Assert.IsFalse(navigator.IsWhiteSpace());
            navigator.ReadChar();
            Assert.IsTrue(navigator.IsWhiteSpace());
        }
        public static Parameter[] ParseString
        (
            [NotNull] string text
        )
        {
            Sure.NotNull(text, nameof(text));

            List <Parameter> result    = new List <Parameter>();
            TextNavigator    navigator = new TextNavigator(text);

            navigator.SkipWhitespace();

            while (!navigator.IsEOF)
            {
                while (true)
                {
                    bool flag = false;
                    if (navigator.IsWhiteSpace())
                    {
                        flag = true;
                        navigator.SkipWhitespace();
                    }
                    if (navigator.PeekChar() == ValueSeparator)
                    {
                        flag = true;
                        navigator.SkipChar(ValueSeparator);
                    }
                    if (!flag)
                    {
                        break;
                    }
                }

                string name = navigator.ReadEscapedUntil
                              (
                    EscapeCharacter,
                    NameSeparator
                              );
                if (ReferenceEquals(name, null))
                {
                    break;
                }
                name = name.Trim();

                navigator.SkipWhitespace();

                string value = navigator.ReadEscapedUntil
                               (
                    EscapeCharacter,
                    ValueSeparator
                               );
                Parameter parameter = new Parameter(name, value);
                result.Add(parameter);
            }

            return(result.ToArray());
        }