comparePackages static method
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();
}