mirror of
https://github.com/tiennm99/github-readme-stats.git
synced 2026-05-20 16:23:41 +00:00
53 lines
1.1 KiB
JavaScript
53 lines
1.1 KiB
JavaScript
function calculateRank({
|
|
totalRepos,
|
|
totalCommits,
|
|
contributions,
|
|
followers,
|
|
prs,
|
|
issues,
|
|
stargazers,
|
|
}) {
|
|
const COMMITS_OFFSET = 1.65;
|
|
const CONTRIBS_OFFSET = 1.65;
|
|
const ISSUES_OFFSET = 1;
|
|
const STARS_OFFSET = 0.75;
|
|
const PRS_OFFSET = 0.5;
|
|
const FOLLOWERS_OFFSET = 0.45;
|
|
|
|
const FIRST_STEP = 0;
|
|
const SECOND_STEP = 5;
|
|
const THIRD_STEP = 20;
|
|
const FOURTH_STEP = 50;
|
|
const FIFTH_STEP = 130;
|
|
|
|
// prettier-ignore
|
|
const score = (
|
|
totalCommits * COMMITS_OFFSET +
|
|
contributions * CONTRIBS_OFFSET +
|
|
issues * ISSUES_OFFSET +
|
|
stargazers * STARS_OFFSET +
|
|
prs * PRS_OFFSET +
|
|
followers * FOLLOWERS_OFFSET
|
|
) / totalRepos;
|
|
|
|
let level = "";
|
|
|
|
if (score == FIRST_STEP) {
|
|
level = "B";
|
|
} else if (score > FIRST_STEP && score <= SECOND_STEP) {
|
|
level = "B+";
|
|
} else if (score > SECOND_STEP && score <= THIRD_STEP) {
|
|
level = "A";
|
|
} else if (score > THIRD_STEP && score <= FOURTH_STEP) {
|
|
level = "A+";
|
|
} else if (score > FOURTH_STEP && score <= FIFTH_STEP) {
|
|
level = "A++";
|
|
} else if (score > FIFTH_STEP) {
|
|
level = "S+";
|
|
}
|
|
|
|
return { level, score };
|
|
}
|
|
|
|
module.exports = calculateRank;
|