Fixed the star count to exactly match github

This commit is contained in:
Eric Allam
2022-05-02 21:42:32 +01:00
parent 436f01e459
commit cabd9e3379
2 changed files with 13 additions and 25 deletions
+8 -22
View File
@@ -1,17 +1,6 @@
// Should truncate the number to not show the exact number of stars
// If over 1000, show 1k
// If between 1100 and 1199, show 1.1k
// If between 1200 and 1299, show 1.2k
// If between 1300 and 1399, show 1.3k
// If over 10000, show 10k
// if between 10100 and 10199, show 10.1k
// if between 10200 and 10299, show 10.2k
// if between 10300 and 10399, show 10.3k
// if between 11000 and 11099, show 11k
// if between 11100 and 11199, show 11.1k
// if over 100000, show 100k
// if between 100100 and 100199, show 100.1k
// if between 100200 and 100299, show 100.2k
// Round up to the nearest hundred, so for example, 1150 becomes 1.2k, 1101 becomes 1.1k, etc.
export function formatStarCount(count: number | undefined): string {
if (count === undefined) {
return "⭐️";
@@ -20,14 +9,11 @@ export function formatStarCount(count: number | undefined): string {
if (count < 1000) {
return count.toString();
}
if (count < 10000) {
return `${Math.floor(count / 100) / 10}k`;
}
if (count < 100000) {
return `${Math.floor(count / 100) / 10}k`;
}
if (count < 1000000) {
return `${Math.floor(count / 100) / 10}k`;
}
return `${Math.floor(count / 100000)}k`;
return `${roundWithPrecision(count / 1000, 1)}k`;
}
function roundWithPrecision(value: number, precision: number): number {
const multiplier = Math.pow(10, precision);
return Math.round(value * multiplier) / multiplier;
}
+5 -3
View File
@@ -6,16 +6,18 @@ describe("formatStarCount", () => {
expect(formatStarCount(0)).toBe("0");
expect(formatStarCount(999)).toBe("999");
expect(formatStarCount(1000)).toBe("1k");
expect(formatStarCount(1050)).toBe("1.1k");
expect(formatStarCount(1100)).toBe("1.1k");
expect(formatStarCount(1200)).toBe("1.2k");
expect(formatStarCount(1300)).toBe("1.3k");
expect(formatStarCount(10000)).toBe("10k");
expect(formatStarCount(10050)).toBe("10.1k");
expect(formatStarCount(10100)).toBe("10.1k");
expect(formatStarCount(10101)).toBe("10.1k");
expect(formatStarCount(10199)).toBe("10.1k");
expect(formatStarCount(10199)).toBe("10.2k");
expect(formatStarCount(10200)).toBe("10.2k");
expect(formatStarCount(52678)).toBe("52.6k");
expect(formatStarCount(99999)).toBe("99.9k");
expect(formatStarCount(52678)).toBe("52.7k");
expect(formatStarCount(99949)).toBe("99.9k");
expect(formatStarCount(100000)).toBe("100k");
expect(formatStarCount(100100)).toBe("100.1k");
expect(formatStarCount(101100)).toBe("101.1k");