getSnippet function

SnippetResult getSnippet(
  1. String originalFile,
  2. String oldString,
  3. String newString, {
  4. int contextLines = 4,
})

Implementation

SnippetResult getSnippet(
  String originalFile,
  String oldString,
  String newString, {
  int contextLines = 4,
}) {
  final before = originalFile.split(oldString)[0];
  final replacementLine = '\n'.allMatches(before).length;
  final newFileLines = applyEditToFile(
    originalFile,
    oldString,
    newString,
  ).split(RegExp(r'\r?\n'));

  final startLine = max(0, replacementLine - contextLines);
  final endLine =
      replacementLine + contextLines + '\n'.allMatches(newString).length + 1;

  final snippetLines = newFileLines.sublist(
    startLine,
    min(endLine, newFileLines.length),
  );

  return SnippetResult(
    snippet: snippetLines.join('\n'),
    startLine: startLine + 1,
  );
}