getLinesRange method

SourceRange getLinesRange(
  1. SourceRange sourceRange, {
  2. bool skipLeadingEmptyLines = false,
})

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);
}