public static IEnumerable <Range> ToRangeSpanningLines(this IPositionable positionable, ImmutableArray <int> lineStarts) { var start = PositionHelper.GetPosition(lineStarts, positionable.Span.Position); var end = PositionHelper.GetPosition(lineStarts, positionable.Span.Position + positionable.Span.Length); while (start.Line < end.Line) { var lineEnd = PositionHelper.GetPosition(lineStarts, lineStarts[start.Line + 1] - 1); yield return(new Range(start, lineEnd)); start = new Position(start.Line + 1, 0); } yield return(new Range(start, end)); }
public static Range ToRange(this IPositionable positionable, ImmutableArray <int> lineStarts) => new Range { Start = PositionHelper.GetPosition(lineStarts, positionable.Span.Position), End = PositionHelper.GetPosition(lineStarts, positionable.Span.Position + positionable.Span.Length) };