mirror of
https://github.com/kamranahmedse/developer-roadmap.git
synced 2026-10-25 09:34:00 +08:00
Consider the top languages when inferring from solution
This commit is contained in:
+26
-4
@@ -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;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user