consolidateProjectStyleLines static method
Utility which allows project styles to contain a + syntax that spreads a command out over multiple lines.
Implementation
static List<String> consolidateProjectStyleLines(AFCommandContext context, List<String> rawLines) {
final result = <String>[];
var idxLine = 0;
while(idxLine < rawLines.length) {
var rawLine = rawLines[idxLine].trim();
if(rawLine.startsWith('import')) {
idxLine++;
final params = rawLine.split(" ");
if(params.length != 2) {
throw AFException("Expected import project_styles/your-project-style, found '$rawLine'");
}
final importStylePath = params[1].split('/');
final importStyle = context.readProjectStyle(importStylePath);
final consolidated = consolidateProjectStyleLines(context, importStyle.buffer.lines);
result.addAll(consolidated);
continue;
}
if(rawLine.endsWith("+")) {
rawLine = rawLine.substring(0, rawLine.length-1).trim();
}
idxLine++;
final compressed = StringBuffer();
var lineNext = (idxLine < rawLines.length) ? rawLines[idxLine].trim() : "";
while(lineNext.startsWith("+")) {
final add = lineNext.substring(1);
if(compressed.isNotEmpty) {
compressed.write(",");
}
compressed.write(add);
idxLine++;
lineNext = (idxLine < rawLines.length) ? rawLines[idxLine].trim() : "";
}
if(compressed.isNotEmpty) {
rawLine = '$rawLine "$compressed"';
}
result.add(rawLine);
}
return result;
}