apply method
Returns original, the content of file, with this change applied.
Implementation
@override
Future<String> apply(String original) async {
final result = parseString(content: original);
final unit = result.unit;
final body = methodBodyIn(unit, className: className, method: method);
final matches = <ListLiteral>[];
body.visitChildren(
NamedListVisitor(
name: listVariableMatch,
parentMatch: parentExpressionMatch,
onMatch: matches.add,
),
);
if (matches.length <= index) {
throw Exception('No matching list found at index $index');
}
final targetList = matches[index];
final elements = ListInsert.parse(insert);
if (elements?.isIn(targetList) ?? false) return original;
return dartFormater.format(
applyInsertions(original, _append(original, targetList, elements)),
);
}