Mono.TextEditor.LineSplitter.NextDelimiter C# (CSharp) Method

NextDelimiter() static private method

static private NextDelimiter ( string text, int offset ) : Delimiter
text string
offset int
return System.Delimiter
		static unsafe internal Delimiter NextDelimiter (string text, int offset)
		{
			fixed (char* start = text) {
				char* p = start + offset;
				char* endPtr = start + text.Length;

				while (p < endPtr) {
					switch (*p) {
					case NewLine.CR:
						char* nextp = p + 1;
						if (nextp < endPtr && *nextp == NewLine.LF)
							return new Delimiter ((int)(p - start), UnicodeNewline.CRLF);
						return new Delimiter ((int)(p - start), UnicodeNewline.CR);
					case NewLine.LF:
						return new Delimiter ((int)(p - start), UnicodeNewline.LF);
					case NewLine.NEL:
						return new Delimiter ((int)(p - start), UnicodeNewline.NEL);
					case NewLine.VT:
						return new Delimiter ((int)(p - start), UnicodeNewline.VT);
					case NewLine.FF:
						return new Delimiter ((int)(p - start), UnicodeNewline.FF);
					case NewLine.LS:
						return new Delimiter ((int)(p - start), UnicodeNewline.LS);
					case NewLine.PS:
						return new Delimiter ((int)(p - start), UnicodeNewline.PS);
					}
					p++;
				}
				return Delimiter.Invalid;
			}
		}

Usage Example

Example #1
0
        public void Initalize(string text, out DocumentLine longestLine)
        {
            delimiters = new List <LineSplitter.Delimiter> ();

            int offset = 0, maxLength = 0, maxLine = 0;

            while (true)
            {
                var delimiter = LineSplitter.NextDelimiter(text, offset);
                if (delimiter.IsInvalid)
                {
                    break;
                }

                var length = delimiter.EndOffset - offset;
                if (length > maxLength)
                {
                    maxLength = length;
                    maxLine   = delimiters.Count;
                }
                delimiters.Add(delimiter);
                offset = delimiter.EndOffset;
            }
            longestLine = Get(maxLine);

            textLength = text.Length;
        }
All Usage Examples Of Mono.TextEditor.LineSplitter::NextDelimiter