muenchhausen
Version:
Produce authentic mockup fake data
70 lines (51 loc) • 1.61 kB
JavaScript
;
var I18n = require("./../../i18n");
function MNumber(context) {
this.culture = context.culture;
// MNumber.super_.apply(this, arguments);
this.i18n = new I18n(this.culture, "numberformat").jsonLoader();
return this;
}
// require("./../../extension/").extend(MNumber);
function generateRandomNumber(min, max) {
var result = Math.random() * (max - min + 1) + min;
return result;
};
function randomNumber(setup) {
var startDate;
var endDate;
var min = parseInt(setup.min && setup.min.toString());
if (Number.isNaN(min)) {
startDate = Number.MIN_SAFE_INTEGER;
} else {
startDate = min + 1;
}
var max = parseInt(setup.max && setup.max.toString());
if (Number.isNaN(max)) {
endDate = Number.MAX_SAFE_INTEGER;
} else {
endDate = max - 1;
}
var result = generateRandomNumber(startDate, endDate);
return result;
}
function numberWithCommas(x, delimiter) {
return x.toString().replace(/\B(?=(\d{3})+(?!\d))/g, delimiter);
}
MNumber.prototype._text = function toString() {
return numberWithCommas(this.value, this.i18n.numberFormatInfo.NumberGroupSeparator);
}
/**
* random number based on template using configuration options.
* For example `rnd:$(date.random) rnd:$(date.random min : 1, max : 111)`
*/
MNumber.prototype.random = function random(context) {
this.format = context;
this.culture = context.culture;
this.value = randomNumber(this.format);
return {
value: this.value,
text: this._text.bind(this)
};
};
module.exports = MNumber;