From 55378cedf7a66ebce58e1c9de214e93cfbd27948 Mon Sep 17 00:00:00 2001 From: Arthur Britto Date: Fri, 26 Apr 2013 14:54:08 -0700 Subject: [PATCH] Add Amount.from_number(). --- src/js/amount.js | 16 ++++++++++++++++ src/js/currency.js | 4 ++++ src/js/uint160.js | 5 ++++- 3 files changed, 24 insertions(+), 1 deletion(-) diff --git a/src/js/amount.js b/src/js/amount.js index 14d65267..8fa93851 100644 --- a/src/js/amount.js +++ b/src/js/amount.js @@ -65,6 +65,10 @@ Amount.json_rewrite = function (j) { return Amount.from_json(j).to_json(); }; +Amount.from_number = function (n) { + return (new Amount()).parse_number(n); +}; + Amount.from_json = function (j) { return (new Amount()).parse_json(j); }; @@ -624,6 +628,18 @@ Amount.prototype.parse_quality = function (q, c, i) { return this; } +Amount.prototype.parse_number = function (n) { + this._currency = Currency.from_json(1); + this._issuer = UInt160.from_json(1); + this._is_negative = n < 0 ? 1 : 0; + this._value = new BigInteger(this._is_negative ? -n : n); + this._offset = 0; + + this.canonicalize(); + + return this; +}; + // <-> j Amount.prototype.parse_json = function (j) { if ('string' === typeof j) { diff --git a/src/js/currency.js b/src/js/currency.js index 22bd112f..38fb9ee5 100644 --- a/src/js/currency.js +++ b/src/js/currency.js @@ -52,6 +52,10 @@ Currency.prototype.parse_json = function (j) { if ("" === j || "0" === j || "XRP" === j) { this._value = 0; } + else if ('number' === typeof j) { + // XXX This is a hack + this._value = j; + } else if ('string' != typeof j || 3 !== j.length) { this._value = NaN; } diff --git a/src/js/uint160.js b/src/js/uint160.js index 66c980ec..52ef9728 100644 --- a/src/js/uint160.js +++ b/src/js/uint160.js @@ -37,7 +37,10 @@ UInt160.prototype.parse_json = function (j) { if (config.accounts && j in config.accounts) j = config.accounts[j].account; - if ('string' !== typeof j) { + if ('number' === typeof j) { + this._value = new BigInteger(j); + } + else if ('string' !== typeof j) { this._value = NaN; } else if (j[0] === "r") {