comparePackages static method

String comparePackages(
  1. List<PackageMetrics> packages
)

Implementation

static String comparePackages(List<PackageMetrics> packages) {
  if (packages.isEmpty) return 'No packages to compare.';

  final buffer = StringBuffer();
  buffer.writeln('πŸ“Š Package Comparison');
  buffer.writeln('═' * 60);

  packages.sort((a, b) => b.compositeScore.compareTo(a.compositeScore));

  for (var i = 0; i < packages.length; i++) {
    final pkg = packages[i];
    final rank = i + 1;
    final medal = rank == 1
        ? 'πŸ₯‡'
        : rank == 2
            ? 'πŸ₯ˆ'
            : rank == 3
                ? 'πŸ₯‰'
                : '  ';

    buffer.writeln('\n$medal Rank $rank: ${pkg.name}');
    buffer.writeln(
        '   Overall Score: ${pkg.compositeScore.toStringAsFixed(1)}/100');
    buffer.writeln(
        '   Requirements Match: ${(pkg.descriptionScore * 100).toStringAsFixed(0)}%');
    buffer.writeln('   Pub Points: ${pkg.pubPoints}/140');
    buffer.writeln('   Popularity: ${pkg.popularity}%');
    buffer.writeln('   Likes: ${pkg.likes}');

    if (pkg.strengths.isNotEmpty) {
      buffer.writeln('   βœ… Strengths: ${pkg.strengths.join(", ")}');
    }
    if (pkg.weaknesses.isNotEmpty) {
      buffer.writeln('   ⚠️  Weaknesses: ${pkg.weaknesses.join(", ")}');
    }
  }

  buffer.writeln('\n${'═' * 60}');
  buffer.writeln('🎯 Recommendation: ${packages.first.name}');
  buffer.writeln('   ${_getRecommendationReason(packages.first, packages)}');

  return buffer.toString();
}