Skip to content

Commit d6da5f0

Browse files
authored
Merge pull request #40 from macalinao/igm/parser
Support commas in parseTokenAmount
2 parents a43682b + a9d96c1 commit d6da5f0

File tree

3 files changed

+20
-0
lines changed

3 files changed

+20
-0
lines changed

.changeset/brave-coins-rescue.md

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
---
2+
"@macalinao/token-utils": patch
3+
---
4+
5+
Support commas in parseTokenAmount

packages/token-utils/src/parse-token-amount.test.ts

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -172,6 +172,18 @@ describe("parseTokenAmount", () => {
172172
expect(result.amount[1]).toBe(9);
173173
});
174174

175+
it("should handle string with commas", () => {
176+
const result = parseTokenAmount(solToken, "1,000,000");
177+
expect(result.amount[0]).toBe(1000000000000000n);
178+
expect(result.amount[1]).toBe(9);
179+
});
180+
181+
it("should handle string with commas and decimals", () => {
182+
const result = parseTokenAmount(solToken, "1,234.567");
183+
expect(result.amount[0]).toBe(1234567000000n);
184+
expect(result.amount[1]).toBe(9);
185+
});
186+
175187
it("should handle NaN as zero", () => {
176188
const result = parseTokenAmount(solToken, Number.NaN);
177189
expect(result.amount[0]).toBe(0n);

packages/token-utils/src/parse-token-amount.ts

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,9 @@ export function parseTokenAmount<
2828

2929
// Remove underscores (common in large numbers)
3030
cleanedAmount = cleanedAmount.replace(/_/g, "");
31+
32+
// Remove commas (common in formatted numbers)
33+
cleanedAmount = cleanedAmount.replace(/,/g, "");
3134
} else if (typeof amountHuman === "number") {
3235
// Handle NaN
3336
if (Number.isNaN(amountHuman)) {

0 commit comments

Comments
 (0)