Files
GitJournal/lib/utils/merge_conflict_resolver.dart
Vishesh Handa c4ef1f569b Use flutter_lint
Instead of picking lint values. This way I don't need to routinely
looking at extra lints to enable.
2021-09-21 15:42:13 +02:00

43 lines
994 B
Dart

/*
* SPDX-FileCopyrightText: 2019-2021 Vishesh Handa <me@vhanda.in>
*
* SPDX-License-Identifier: AGPL-3.0-or-later
*/
import 'dart:convert';
String resolveMergeConflict(String fileContents) {
var lines = const LineSplitter().convert(fileContents);
var newLines = <String>[];
var inMergeConflict = false;
var seenStartMarker = false;
var seenMiddleMarker = false;
for (var line in lines) {
if (line.startsWith("<<<<<<<") && !inMergeConflict) {
inMergeConflict = true;
seenStartMarker = true;
continue;
}
if (line == "=======" && inMergeConflict && seenStartMarker) {
seenMiddleMarker = true;
continue;
}
if (line.startsWith(">>>>>>>") && inMergeConflict && seenMiddleMarker) {
inMergeConflict = false;
seenStartMarker = false;
seenMiddleMarker = false;
continue;
}
if (inMergeConflict && seenMiddleMarker) {
continue;
}
newLines.add(line);
}
return newLines.join('\n');
}