mirror of
https://github.com/Xahau/xahau.js.git
synced 2026-04-29 15:37:50 +00:00
Merge branch 'master' into develop
This commit is contained in:
@@ -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,19 @@ Amount.prototype.parse_quality = function (q, c, i) {
|
||||
return this;
|
||||
}
|
||||
|
||||
Amount.prototype.parse_number = function (n) {
|
||||
this._is_native = false;
|
||||
this._currency = Currency.from_json(1);
|
||||
this._issuer = UInt160.from_json(1);
|
||||
this._is_negative = n < 0 ? 1 : 0;
|
||||
this._value = new BigInteger(String(this._is_negative ? -n : n));
|
||||
this._offset = 0;
|
||||
|
||||
this.canonicalize();
|
||||
|
||||
return this;
|
||||
};
|
||||
|
||||
// <-> j
|
||||
Amount.prototype.parse_json = function (j) {
|
||||
if ('string' === typeof j) {
|
||||
|
||||
@@ -23,7 +23,7 @@ Currency.json_rewrite = function (j) {
|
||||
|
||||
Currency.from_json = function (j) {
|
||||
if (j instanceof Currency) return j.clone();
|
||||
else if ('string' === typeof j) return (new Currency()).parse_json(j);
|
||||
else if ('string' === typeof j || 'number' === typeof j) return (new Currency()).parse_json(j);
|
||||
else return new Currency(); // NaN
|
||||
};
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
@@ -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(String(j));
|
||||
}
|
||||
else if ('string' !== typeof j) {
|
||||
this._value = NaN;
|
||||
}
|
||||
else if (j[0] === "r") {
|
||||
|
||||
@@ -12,6 +12,12 @@ var config = require('../src/js/config').load(require('./config'));
|
||||
// XXX Add test cases that push XRP vs non-XRP behavior.
|
||||
|
||||
buster.testCase("Amount", {
|
||||
"from_number" : {
|
||||
"Number 1" : function () {
|
||||
buster.assert.equals("1/1/rrrrrrrrrrrrrrrrrrrrBZbvji", Amount.from_number(1).to_text_full());
|
||||
},
|
||||
},
|
||||
|
||||
"UInt160" : {
|
||||
"Parse 0" : function () {
|
||||
buster.assert.equals(nbi(), UInt160.from_generic("0")._value);
|
||||
|
||||
Reference in New Issue
Block a user