getLinesRange method
Returns a SourceRange
that covers sourceRange
and extends (if
possible) to cover whole lines.
Implementation
SourceRange getLinesRange(
SourceRange sourceRange, {
bool skipLeadingEmptyLines = false,
}) {
// Calculate the start:
var startOffset = sourceRange.offset;
var startLineOffset = getLineContentStart(startOffset);
if (skipLeadingEmptyLines) {
startLineOffset = _skipEmptyLinesLeft(startLineOffset);
}
// Calculate the end:
var endOffset = sourceRange.end;
var afterEndLineOffset = endOffset;
var lineInfo = _unit.lineInfo;
var lineStart = lineInfo.getOffsetOfLine(
lineInfo.getLocation(startLineOffset).lineNumber - 1,
);
if (lineStart == startLineOffset) {
// Only consume line endings after the end of the range if there is
// nothing else on the line containing the beginning of the range.
// Otherwise this will end up incorrectly merging two line.
afterEndLineOffset = getLineContentEnd(endOffset);
}
return range.startOffsetEndOffset(startLineOffset, afterEndLineOffset);
}