web3.js/lib/solidity/ureal.js

58 lines
1.5 KiB
JavaScript
Raw Normal View History

2015-07-28 15:56:18 +02:00
var f = require('./formatters');
var SolidityType = require('./type');
/**
* SolidityTypeUReal is a prootype that represents ureal type
* It matches:
* ureal
* ureal[]
* ureal[4]
* ureal[][]
* ureal[3][]
* ureal[][6][], ...
* ureal32
* ureal64[]
* ureal8[4]
* ureal256[][]
* ureal[3][]
* ureal64[][6][], ...
*/
var SolidityTypeUReal = function () {
this._inputFormatter = f.formatInputReal;
this._outputFormatter = f.formatOutputUReal;
};
SolidityTypeUReal.prototype = new SolidityType({});
SolidityTypeUReal.prototype.constructor = SolidityTypeUReal;
SolidityTypeUReal.prototype.isType = function (name) {
return !!name.match(/ureal([0-9]*)?(\[([0-9]*)\])?/);
};
SolidityTypeUReal.prototype.staticPartLength = function (name) {
return 32 * this.staticArrayLength(name);
};
SolidityTypeUReal.prototype.isDynamicArray = function (name) {
var matches = name.match(/ureal([0-9]*)?(\[([0-9]*)\])?/);
// is array && doesn't have length specified
return !!matches[2] && !matches[3];
};
SolidityTypeUReal.prototype.isStaticArray = function (name) {
var matches = name.match(/ureal([0-9]*)?(\[([0-9]*)\])?/);
// is array && have length specified
return !!matches[2] && !!matches[3];
};
SolidityTypeUReal.prototype.staticArrayLength = function (name) {
return name.match(/ureal([0-9]*)?(\[([0-9]*)\])?/)[3] || 1;
};
SolidityTypeUReal.prototype.nestedName = function (name) {
// removes first [] in name
return name.replace(/\[([0-9])*\]/, '');
};
module.exports = SolidityTypeUReal;