Consider the top languages when inferring from solution

This commit is contained in:
Kamran Ahmed
2024-08-26 14:02:42 +01:00
parent 2b6c326819
commit 2de99daebb
2 changed files with 37 additions and 8 deletions
+26 -4
View File
@@ -33,18 +33,22 @@ export async function getFormattedStars(
return formatter.format(stars);
}
const defaultRanking = "7th";
const defaultRanking = '7th';
let ranking: string;
export async function getRepositoryRank(
repo = 'kamranahmedse/developer-roadmap',
): Promise<string> {
try {
const response = await fetch(`https://api.github.com/search/repositories?q=stars:>100000&o=desc&s=stars`);
const response = await fetch(
`https://api.github.com/search/repositories?q=stars:>100000&o=desc&s=stars`,
);
const json = await response.json();
const repositories = json.items || [];
for (let rank = 1; rank <= repositories.length; rank++) {
if (repositories[rank - 1].full_name.toLowerCase() === repo.toLowerCase()) {
if (
repositories[rank - 1].full_name.toLowerCase() === repo.toLowerCase()
) {
ranking = `${rank}${getOrdinalSuffix(rank)}`;
}
}
@@ -70,4 +74,22 @@ function getOrdinalSuffix(rank: number): string {
default:
return 'th';
}
}
}
// fetches the top languages of a GitHub repository
// i.e. 90% of the bytes are in these languages
export function getTopGitHubLanguages(languages: Record<string, number>) {
const total = Object.values(languages).reduce((a, b) => a + b, 0);
let sum = 0;
let topLanguages = [];
for (const [language, bytes] of Object.entries(languages)) {
sum += bytes;
topLanguages.push(language);
if (sum / total >= 0.9) {
break;
}
}
return topLanguages;
}