diff --git a/remix-lib/index.js b/remix-lib/index.js index 2a7290e68c..a691fed221 100644 --- a/remix-lib/index.js +++ b/remix-lib/index.js @@ -23,6 +23,7 @@ var txHelper = require('./src/execution/txHelper') var txFormat = require('./src/execution/txFormat') var txListener = require('./src/execution/txListener') var executionContext = require('./src/execution/execution-context') +var typeConversion = require('./src/execution/typeConversion') if (typeof (module) !== 'undefined' && typeof (module.exports) !== 'undefined') { module.exports = modules() @@ -63,7 +64,8 @@ function modules () { txHelper: txHelper, executionContext: executionContext, txFormat: txFormat, - txListener: txListener + txListener: txListener, + typeConversion: typeConversion } } } diff --git a/remix-lib/src/execution/typeConversion.js b/remix-lib/src/execution/typeConversion.js new file mode 100644 index 0000000000..1b5d879fc3 --- /dev/null +++ b/remix-lib/src/execution/typeConversion.js @@ -0,0 +1,42 @@ +'use strict' +var ethJSUtil = require('ethereumjs-util') +var BN = ethJSUtil.BN + +module.exports = { + toInt: (h) => { + if (h.indexOf && h.indexOf('0x') === 0) { + return (new BN(h.replace('0x', ''), 16)).toString(10) + } else if (h.constructor && h.constructor.name === 'BigNumber' || BN.isBN(h)) { + return h.toString(10) + } + return h + }, + stringify: stringify +} + +function stringify (v) { + try { + if (v instanceof Array) { + var ret = [] + for (var k in v) { + ret.push(stringify(v[k])) + } + return ret + } else if (BN.isBN(v) || (v.constructor && v.constructor.name === 'BigNumber')) { + return v.toString(10) + } else if (v._isBuffer) { + return ethJSUtil.bufferToHex(v) + } else if (typeof v === 'object') { + var retObject = {} + for (var i in v) { + retObject[i] = stringify(v[i]) + } + return retObject + } else { + return v + } + } catch (e) { + console.log(e) + return v + } +}