findTopLevelBrackets static method
Implementation
static List<BracketRange> findTopLevelBrackets(
String input, {
String openingBracket = '{',
String closingBracket = '}',
}) {
final characters = input.split('');
final result = <BracketRange>[];
int start = -1;
int counter = 0;
characters.forEachIndexed((index, c) {
if (c == openingBracket) {
counter++;
if (counter == 1) {
// first opening bracket
start = index;
}
} else if (c == closingBracket) {
counter--;
if (counter == 0) {
result.add(BracketRange(characters, start, index));
} else if (counter < 0) {
// invalid closing bracket
// just find the next opening bracket
counter = 0;
}
}
});
return result;
}