in lib/github_datatypes.dart [1858:1914]
String toMarkdown(
{ClusterReportSort? sortType,
bool skipEmpty = true,
showStatistics = false}) {
var result = '';
var m = mean(), s = stdev();
if (clusters.keys.isEmpty) {
result = 'no items\n\n';
} else {
var kind = '';
// Determine the type of this cluster
for (var key in clusters.keys) {
if (clusters[key] != null && clusters[key].length != 0) {
dynamic item = clusters[key].first;
if (item is Issue) {
kind = 'issue(s)';
} else {
kind = 'pull request(s)';
}
break;
}
}
// Sort labels in descending order
List<String> keys = clusters.keys.toList();
keys.sort((a, b) => sortType == ClusterReportSort.byCount
? clusters[b].length - clusters[a].length
: a.compareTo(b));
// Remove the unlabled item if it's empty
if (clusters[_unlabeledKey] != null &&
clusters[_unlabeledKey].length == 0) keys.remove(_unlabeledKey);
if (clusters[_unassignedKey] != null &&
clusters[_unassignedKey].length == 0) keys.remove(_unassignedKey);
if (clusters[_noMilestoneKey] != null &&
clusters[_noMilestoneKey].length == 0) keys.remove(_noMilestoneKey);
if (skipEmpty) {
if (keys.contains(_unlabeledKey)) keys.remove(_unlabeledKey);
if (keys.contains(_unassignedKey)) keys.remove(_unassignedKey);
}
// Dump all clusters
for (var clusterKey in keys) {
result =
'${result}\n\n#### ${clusterKey} - ${clusters[clusterKey].length} ${kind}';
if (showStatistics) {
var z = (clusters[clusterKey].length - m) / s;
result = '${result}, z = ${z}';
}
for (var item in clusters[clusterKey]) {
result = '${result}\n\n' +
item.summary(linebreakAfter: true, boldInteresting: false);
}
}
}
return '${result}\n\n';
}