Skip to content

Commit

Permalink
refactor(utils): rename mapping methods and deprecate old ones (#493)
Browse files Browse the repository at this point in the history
  • Loading branch information
tien authored Feb 17, 2025
1 parent 293d300 commit 7b6c493
Show file tree
Hide file tree
Showing 5 changed files with 38 additions and 7 deletions.
5 changes: 5 additions & 0 deletions .changeset/curvy-boxes-rescue.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
"@reactive-dot/utils": minor
---

Renamed `DenominatedNumber` mapping methods.
4 changes: 2 additions & 2 deletions apps/docs/react/guides/number-utility.md
Original file line number Diff line number Diff line change
Expand Up @@ -37,14 +37,14 @@ let dotAmount = DenominatedNumber.fromNumber(10, 10, "DOT");

// Arithmetic operations can be performed using the number's planck value

dotAmount = dotAmount.mapFromPlanck((planck) => planck + 5_000_000_000n);
dotAmount = dotAmount.mapPlanck((planck) => planck + 5_000_000_000n);

console.log(dotAmount.toLocaleString()); // DOT 10.50

// Arithmetic operations can also be carried out with the number value
// instead of planck if possible lost of precision is acceptable

dotAmount = dotAmount.mapFromNumber((number) => (number * 2) / 4);
dotAmount = dotAmount.mapNumber((number) => (number * 2) / 4);

console.log(dotAmount.toLocaleString()); // DOT 5.25
```
Expand Down
4 changes: 2 additions & 2 deletions apps/docs/vue/guides/number-utility.md
Original file line number Diff line number Diff line change
Expand Up @@ -37,14 +37,14 @@ let dotAmount = DenominatedNumber.fromNumber(10, 10, "DOT");

// Arithmetic operations can be performed using the number's planck value

dotAmount = dotAmount.mapFromPlanck((planck) => planck + 5_000_000_000n);
dotAmount = dotAmount.mapPlanck((planck) => planck + 5_000_000_000n);

console.log(dotAmount.toLocaleString()); // DOT 10.50

// Arithmetic operations can also be carried out with the number value
// instead of planck if possible lost of precision is acceptable

dotAmount = dotAmount.mapFromNumber((number) => (number * 2) / 4);
dotAmount = dotAmount.mapNumber((number) => (number * 2) / 4);

console.log(dotAmount.toLocaleString()); // DOT 5.25
```
Expand Down
18 changes: 17 additions & 1 deletion packages/utils/src/denominated-number.test.ts
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
import { DenominatedNumber } from "./denominated-number.js";
import { describe, expect, it } from "vitest";
import { describe, expect, it, test } from "vitest";

describe("fromPlanck", () => {
it("leads to correct atomics value", () => {
Expand Down Expand Up @@ -239,3 +239,19 @@ describe("toLocaleString", () => {
expect(string).toContain("30K");
});
});

test("mapPlanck", () => {
const number = new DenominatedNumber(30, 0, "DOT").mapPlanck(
(planck) => planck * 2n,
);

expect(number.toString()).toEqual("60");
});

test("mapNumber", () => {
const number = new DenominatedNumber(30, 0, "DOT").mapNumber(
(number) => number * 2,
);

expect(number.toString()).toEqual("60");
});
14 changes: 12 additions & 2 deletions packages/utils/src/denominated-number.ts
Original file line number Diff line number Diff line change
Expand Up @@ -112,22 +112,32 @@ export class DenominatedNumber extends Number {
.replace("XTS", this.denomination);
}

mapFromPlanck(mapper: (planck: bigint) => bigint) {
mapPlanck(mapper: (planck: bigint) => bigint) {
return new DenominatedNumber(
mapper(this.planck),
this.decimals,
this.denomination,
);
}

mapFromNumber(mapper: (number: number) => number) {
/**
* @deprecated Use {@link DenominatedNumber.mapPlanck} instead.
*/
mapFromPlanck = this.mapPlanck;

mapNumber(mapper: (number: number) => number) {
return DenominatedNumber.fromNumber(
mapper(this.valueOf()),
this.decimals,
this.denomination,
);
}

/**
* @deprecated Use {@link DenominatedNumber.mapNumber} instead.
*/
mapFromNumber = this.mapNumber;

static #verifyDecimals(fractionalDigits: number): void {
if (!Number.isInteger(fractionalDigits))
throw new Error("Decimals is not an integer");
Expand Down

0 comments on commit 7b6c493

Please sign in to comment.