String toMarkdown()

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';
  }