public TextPtr SkipWhitespace(bool skipNewline = false) { TextPtr ptr = this; int length = ptr.Content.Length; if (skipNewline) { while (true) { char c = ptr.Char; if ((ptr.Index >= length) || !char.IsWhiteSpace(c)) { return(ptr); } ptr = op_Increment(ptr); } } while (true) { char ch2 = ptr.Char; if (((ptr.Index >= length) || ptr.IsNewLine()) || !char.IsWhiteSpace(ch2)) { return(ptr); } ptr = op_Increment(ptr); } }
private void Realize(ref MyIniKey key, ref StringSegment value) { if (!value.IsCached) { string text = value.Text; TextPtr ptr = new TextPtr(text, value.Start); if ((value.Length > 0) && ptr.IsNewLine()) { StringBuilder tmpValueBuilder = this.TmpValueBuilder; try { ptr = TextPtr.op_Increment(ptr.FindEndOfLine(true)); int count = (value.Start + value.Length) - ptr.Index; tmpValueBuilder.Append(text, ptr.Index, count); tmpValueBuilder.Replace("\n|", "\n"); this.m_items[key] = value = new StringSegment(tmpValueBuilder.ToString()); } finally { tmpValueBuilder.Clear(); } } else { this.m_items[key] = value = new StringSegment(value.ToString()); } } }
public TextPtr FindEndOfLine(bool skipNewline = false) { int length = this.Content.Length; if (this.Index >= length) { return(this); } TextPtr ptr = this; while (ptr.Index < length) { if (ptr.IsNewLine()) { if (!skipNewline) { return(ptr); } if (ptr.Char == '\r') { ptr = op_Increment(ptr); } return(op_Increment(ptr)); } ptr = op_Increment(ptr); } return(ptr); }
public bool IsStartOfLine() { if (this.Index > 0) { TextPtr ptr = this - 1; return(ptr.IsNewLine()); } return(true); }
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(); }