private void ReadPrefix(ref TextPtr ptr, out StringSegment prefix) { bool flag = false; TextPtr ptr2 = ptr; while (!ptr.IsOutOfBounds()) { if (ptr.IsStartOfLine() && (ptr.Char == ';')) { if (!flag) { flag = true; ptr2 = ptr; } ptr = ptr.FindEndOfLine(false); } TextPtr ptr3 = ptr.SkipWhitespace(false); if (!ptr3.IsNewLine()) { break; } if (ptr3.Char == '\r') { ptr = ptr3 + 2; } else { ptr = ptr3 + 1; } } if (flag) { TextPtr ptr4 = ptr; while (char.IsWhiteSpace(ptr4.Char) && (ptr4 > ptr2)) { ptr4 = TextPtr.op_Decrement(ptr4); } int length = ptr4.Index - ptr2.Index; if (length > 0) { prefix = new StringSegment(ptr.Content, ptr2.Index, length); return; } } prefix = new StringSegment(); }
public bool TryParse(string argument) { this.Clear(); if (string.IsNullOrEmpty(argument)) { return(false); } TextPtr ptr = new TextPtr(argument); Label_001D: ptr = ptr.SkipWhitespace(false); if (!ptr.IsOutOfBounds()) { if (!this.TryParseSwitch(ref ptr)) { this.ParseParameter(ref ptr); } goto Label_001D; } return(this.Items.Count > 0); }
private void RealizeComment(ref StringSegment comment) { if (!comment.IsCached) { string text = comment.Text; TextPtr ptr = new TextPtr(text, comment.Start); if (comment.Length > 0) { StringBuilder tmpValueBuilder = this.TmpValueBuilder; try { TextPtr ptr2 = ptr + comment.Length; for (bool flag = false; ptr < ptr2; flag = true) { if (flag) { tmpValueBuilder.Append('\n'); } if (ptr.Char == ';') { ptr = TextPtr.op_Increment(ptr); TextPtr ptr3 = ptr.FindEndOfLine(false); int count = ptr3.Index - ptr.Index; tmpValueBuilder.Append(ptr.Content, ptr.Index, count); ptr = ptr3.SkipWhitespace(false); if (ptr.IsEndOfLine()) { if (ptr.Char == '\r') { ptr += 2; } else { ptr = TextPtr.op_Increment(ptr); } } } else { ptr = ptr.SkipWhitespace(false); if (!ptr.IsEndOfLine()) { break; } if (ptr.Char == '\r') { ptr += 2; } else { ptr = TextPtr.op_Increment(ptr); } } } comment = new StringSegment(tmpValueBuilder.ToString()); } finally { tmpValueBuilder.Clear(); } } } }