Example #1
0
        //[Pure]
        public static TextPosition ToPosition(this TextOffset offset, string data)
        {
            if (string.IsNullOrEmpty(data))
            {
                throw new ArgumentNullException(data);
            }

            var lines = data.Replace("\r", "").Split('\n');
            var numLinesBeforeOffset = 0;
            var pos = 0;

            for (var i = 0; i < lines.Length; ++i)
            {
                if (offset < pos + lines[i].Length + 1)
                {
                    break;
                }
                ++numLinesBeforeOffset;
                pos += lines[i].Length + 1;
            }

            var character = offset - pos;

            return(new TextPosition(
                       new LineNumber(numLinesBeforeOffset + 1),
                       new CharacterNumber(character + 1)));
        }
Example #2
0
 public bool Equals(TextOffset other)
 {
     return(_offset == other._offset);
 }