Merge branch 'master' into develop

This commit is contained in:
Arthur Britto
2013-04-26 16:00:46 -07:00
4 changed files with 32 additions and 2 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,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) {

View File

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

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(String(j));
}
else if ('string' !== typeof j) {
this._value = NaN;
}
else if (j[0] === "r") {

View File

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