in tool/stats.dart [97:157]
Future<void> _processConfig(
String testPrefix,
bool raw,
bool updateFiles,
bool verbose,
String specifiedSection,
bool verboseLooseMatch,
) async {
final config = _configs.singleWhere((c) => c.prefix == testPrefix);
var sections = loadCommonMarkSections(testPrefix);
var scores = SplayTreeMap<String, SplayTreeMap<int, CompareLevel>>(
compareAsciiLowerCaseNatural);
for (var entry in sections.entries) {
if (specifiedSection != null && entry.key != specifiedSection) {
continue;
}
final units = <DataCase>[];
for (var e in entry.value) {
final result = compareResult(config, e,
verboseFail: verbose, verboseLooseMatch: verboseLooseMatch);
units.add(DataCase(
front_matter: result.testCase.toString(),
input: result.testCase.markdown,
expectedOutput:
(_improveStrict && result.compareLevel == CompareLevel.loose)
? result.testCase.html
: result.result,
));
var nestedMap = scores.putIfAbsent(
entry.key, () => SplayTreeMap<int, CompareLevel>());
nestedMap[e.example] = result.compareLevel;
}
if (updateFiles && units.isNotEmpty) {
var fileName =
entry.key.toLowerCase().replaceAll(_sectionNameReplace, '_');
while (fileName.endsWith('_')) {
fileName = fileName.substring(0, fileName.length - 1);
}
fileName = '$fileName.unit';
File(p.join('test', testPrefix, fileName))
..createSync(recursive: true)
..writeAsStringSync(_unitOutput(units));
}
}
if (raw || updateFiles) {
await _printRaw(testPrefix, scores, updateFiles);
}
if (!raw || updateFiles) {
await _printFriendly(testPrefix, scores, updateFiles);
}
}