コード例 #1
0
        public bool Equals(StringBuffer other)
        {
            if (other is null)
            {
                return(false);
            }

            if (ReferenceEquals(this, other))
            {
                return(true);
            }

            if (Count != other.Count)
            {
                return(false);
            }

            var t = this.GetEnumerator();
            var o = other.GetEnumerator();

            bool result = true;

            while (o.MoveNext() && t.MoveNext())
            {
                if (t.Current != o.Current)
                {
                    result = false;
                    break;
                }
            }

            t.Dispose();
            o.Dispose();

            return(result);
        }
コード例 #2
0
 public EmException(StringBuffer currentBuffer)
 {
     this.CurrentBuffer = currentBuffer;
 }
コード例 #3
0
 public EmException(string message, StringBuffer currentBuffer) : base(message)
 {
     this.CurrentBuffer = currentBuffer;
 }
コード例 #4
0
 internal static string ReadUntilDelimiter(StringBuffer fullString, char delimeter)
 {
     return(ReadUntilDelimiter(fullString, new HashSet <char> {
         delimeter
     }));
 }
コード例 #5
0
        public string PrettyPrint()
        {
            string originalValue = ToString();

            if (string.IsNullOrEmpty(originalValue))
            {
                return(string.Empty);
            }

            var originalString = new StringBuffer(originalValue);

            var prettyString = new StringBuffer();

            int       indentLevel = 0;
            const int indentSize  = 4;

            do
            {
                switch (originalString.PeekStart())
                {
                case SpChar_BeginComplexValue:
                    prettyString.PushToEnd('\r', '\n');
                    prettyString.PushToEnd(' ', indentLevel * indentSize);
                    indentLevel++;
                    prettyString.PushToEnd(originalString.PopFromStart());
                    prettyString.PushToEnd('\r', '\n');
                    prettyString.PushToEnd(' ', indentLevel * indentSize);
                    prettyString.PushToEnd(originalString.PopFromStart());
                    break;

                case SpChar_ValueDelimiter:
                    prettyString.PushToEnd(originalString.PopFromStart());

                    if (originalString.IsEmpty || originalString.PeekStart() == SpChar_FinishComplexValue)
                    {
                        indentLevel--;
                    }

                    prettyString.PushToEnd('\r', '\n');
                    prettyString.PushToEnd(' ', indentLevel * indentSize);

                    break;

                case SpChar_CommentBlock:
                    prettyString.PushToEnd(originalString.PopFromStart());

                    do
                    {
                        prettyString.PushToEnd(originalString.PopFromStart());
                    } while (!originalString.IsEmpty && prettyString.PeekEnd() != SpChar_CommentBlock);

                    prettyString.PushToEnd('\r', '\n');
                    prettyString.PushToEnd(' ', indentLevel * indentSize);
                    break;

                case SpChar_KeyDelimiter:
                    prettyString.PushToEnd(originalString.PopFromStart());
                    prettyString.PushToEnd(' ');     // Add a space after every KeyDelilmiter
                    break;

                default:
                    prettyString.PushToEnd(originalString.PopFromStart());
                    break;
                }
            } while (!originalString.IsEmpty);

            return(prettyString.ToString());
        }
コード例 #6
0
 protected virtual string ExtractValue(StringBuffer fullString)
 {
     return(ReadUntilDelimiter(fullString, SpChar_ValueDelimiter).ToString());
 }
コード例 #7
0
 public StringBuffer(StringBuffer original) : base(original)
 {
 }