Example #1
0
        private bool NextValue(CharEnumerator cursor, out string value)
        {
            Characters.Escaper escape = Characters.NoEscape;

            builder.Clear();
            while (true)
            {
                if (!cursor.MoveNext())
                {
                    value = builder.ToString();
                    return(false);
                }

                if (Characters.IsEscape(cursor.Current))
                {
                    escape = Characters.Unescape;
                    continue;
                }

                if (Characters.IsTerminator(cursor.Current))
                {
                    value = builder.ToString();
                    return(true);
                }

                builder.Append(escape(cursor.Current));
                escape = Characters.NoEscape;
            }
        }
Example #2
0
        public static StringBuilder AppendEscaped(this StringBuilder builder, string value)
        {
            Characters.Escaper escape = Characters.NoEscape;

            foreach (var character in value)
            {
                if (Characters.IsSpecial(character))
                {
                    builder.Append('\\');
                    escape = Characters.Escape;
                }

                builder.Append(escape(character));
                escape = Characters.NoEscape;
            }

            return(builder);
        }