Hey is a decentralized and permissionless social media app built with Lens Protocol 馃尶
1import humanize from "./humanize";
2
3const LOOKUP = [
4 { symbol: "E", value: 1e18 },
5 { symbol: "P", value: 1e15 },
6 { symbol: "T", value: 1e12 },
7 { symbol: "G", value: 1e9 },
8 { symbol: "M", value: 1e6 },
9 { symbol: "k", value: 1e3 },
10 { symbol: "", value: 1 }
11];
12
13const TRIM_ZEROES_REGEX = /\.0+$|(\.\d*[1-9])0+$/;
14
15const nFormatter = (num: number, digits = 1): string => {
16 if (!Number.isFinite(num)) {
17 return "";
18 }
19
20 if (num < 1000) {
21 return humanize(num);
22 }
23
24 const item = LOOKUP.find((i) => num >= i.value);
25 if (!item) {
26 return "0";
27 }
28
29 return (num / item.value)
30 .toFixed(digits)
31 .replace(TRIM_ZEROES_REGEX, "$1")
32 .concat(item.symbol);
33};
34
35export default nFormatter;