Add Amount.from_number().

This commit is contained in:
Arthur Britto
2013-04-26 14:54:08 -07:00
parent 0813e312d6
commit 55378cedf7
3 changed files with 24 additions and 1 deletions

View File

@@ -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) {

View File

@@ -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;
}

View File

@@ -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") {