generateProjectInfoMarkdown static method

String generateProjectInfoMarkdown()

Implementation

static String generateProjectInfoMarkdown() {
  final projectInfo = ProjectInfoCollector().projectInfo;
  final rows = [
    ["name", "description", "version"],
    for (var package in projectInfo.packages)
      [
        "[${package.name}](${package.path})",
        package.description ?? "",
        package.version ?? "",
      ]
  ];

  /// column的宽度相同,且为字符长度最大值
  final widths = [1, 1, 1];
  for (var row in rows) {
    for (var i = 0; i < 3; i++) {
      if (row[i].length > widths[i]) {
        widths[i] = row[i].length;
      }
    }
  }

  /// 根据宽度,在文本右边附加空格
  for (var row in rows) {
    for (var i = 0; i < 3; i++) {
      row[i] = row[i].padRight(widths[i]);
    }
  }

  final lines = rows.map((e) => '| ${e.join(' | ')} |').toList()
    ..insert(1, '|${widths.map((e) => '-' * (e + 2)).join('|')}|');

  return lines.join('\n');
}