UNPKG

@yukinotech/babel-plugin-transform-jsbd-to-bigdecimal

Version:

A scheme similar to JSBI, for transforming JSBD to native bigdecimal, Referring to the implementation of jsbi (https://github.com/GoogleChromeLabs/babel-plugin-transform-jsbi-to-bigint)

39 lines (30 loc) 2.44 kB
# babel-plugin-transform-jsbd-to-bigdecimal A scheme similar to JSBI, for transforming JSBD to native bigdecimal, Referring to the implementation of jsbi (https://github.com/GoogleChromeLabs/babel-plugin-transform-jsbi-to-bigint) ## how to use use as a babel plugin `@yukinotech/babel-plugin-transform-jsbd-to-bigdecimal` ```js const result = require('@babel/core').transform(code, { plugins: ['@yukinotech/babel-plugin-transform-jsbd-to-bigdecimal'], comments: false, }) ``` ## how it work it will replace indetitor `JSBD` to native bigdecimal syntax | Operation | native BigDecimals | JSBD | | ---------------------------------| -------------------| -----------------------------------------| | Addition | `c = a + b` | `c = JSBD.add(a, b)` | | Subtraction | `c = a - b` | `c = JSBD.subtract(a, b)` | | Multiplication | `c = a * b` | `c = JSBD.multiply(a, b)` | | Division with two arguments | `c = a / b` | `c = JSBD.divide(a, b)` | | Remainder | `c = a % b` | `c = JSBD.remainder(a, b)` | | Exponentiation | `c = a ** b` | `c = JSBD.pow(a, b)` | | Comparison to other BigInts | `a === b` | `JSBD.equal(a, b)` | | | `a !== b` | `JSBD.notEqual(a, b)` | | | `a < b` | `JSBD.lessThan(a, b)` | | | `a <= b` | `JSBD.lessThanOrEqual(a, b)` | | | `a > b` | `JSBD.greaterThan(a, b)` | | | `a >= b` | `JSBD.greaterThanOrEqual(a, b)` | | | `c = BigDecimal.round(a,option)` | `c = JSBD.round(a, option)` | | Division with three arguments | `c = BigDecimal.divide(a,b,roundOption)` | `c = JSBD.divide(a, b,roundOption)`| ### differences from bigint to bigdecimal since bigdecimal has a roundOption, we can't just transform `JSBI.add(one,two)` to `one + two`,if there are three arguments we just transform `JSBD.add(one,two,option)` to `Decimal.add(one,two,option)`