diff options
author | Remco Bloemen <Recmo@users.noreply.github.com> | 2018-11-09 07:27:53 +0800 |
---|---|---|
committer | GitHub <noreply@github.com> | 2018-11-09 07:27:53 +0800 |
commit | c448a409c1dd7411208aeb577b64ba1246fc03d1 (patch) | |
tree | 027cd21d0de2a18cd5ea4f79190cccd4c479eb64 | |
parent | 689f8f1fbc34b6fa976f95419804f9eee7e637f6 (diff) | |
parent | dfef33bc41221c3f0f38d7e1c3e4163455b98b79 (diff) | |
download | dexon-0x-contracts-c448a409c1dd7411208aeb577b64ba1246fc03d1.tar.gz dexon-0x-contracts-c448a409c1dd7411208aeb577b64ba1246fc03d1.tar.zst dexon-0x-contracts-c448a409c1dd7411208aeb577b64ba1246fc03d1.zip |
Merge pull request #977 from 0xProject/feature/utils/prettybignum
Set custom inspect printer in BigNumber
-rw-r--r-- | packages/utils/src/configured_bignumber.ts | 23 |
1 files changed, 23 insertions, 0 deletions
diff --git a/packages/utils/src/configured_bignumber.ts b/packages/utils/src/configured_bignumber.ts index 2b22b6938..34b57d303 100644 --- a/packages/utils/src/configured_bignumber.ts +++ b/packages/utils/src/configured_bignumber.ts @@ -11,4 +11,27 @@ BigNumber.config({ DECIMAL_PLACES: 78, }); +// Set a debug print function for NodeJS +// Upstream issue: https://github.com/MikeMcl/bignumber.js/issues/188 +import isNode = require('detect-node'); +if (isNode) { + // Dynamically load a NodeJS specific module. + // Typescript requires all imports to be global, so we need to use + // `const` here and disable the tslint warning. + // tslint:disable-next-line: no-var-requires + const util = require('util'); + + // Set a custom util.inspect function + // HACK: We add a function to the BigNumber class by assigning to the + // prototype. The function name is a symbol provided by Node. + (BigNumber.prototype as any)[util.inspect.custom] = function(): string { + // HACK: When executed, `this` will refer to the BigNumber instance. + // This is also why we need a function expression instead of an + // arrow function, as the latter does not have a `this`. + // Return the readable string representation + // tslint:disable-next-line: no-invalid-this + return this.toString(); + }; +} + export { BigNumber }; |