/**
* © All rights reserved x9a.ru, 2013
*/
String.prototype.repeat = function(n) {
var out = '';
while(0 < n--) {
out += this;
}
return out;
};
String.prototype.pad = function(requiredLength, paddingStr, paddingType) {
paddingType = paddingType ? paddingType.toLowerCase() : '';
paddingStr = paddingStr || ' ';
var n = requiredLength - this.length;
if (n) {
paddingStr = paddingStr.repeat( Math.ceil(n / paddingStr.length) ).substr(0, n);
if (paddingType == 'both') {
n /= 2;
return paddingStr.substr( 0, Math.ceil(n) ) + this + paddingStr.substr( 0, Math.floor(n) );
}
if (paddingType == 'left') {
return paddingStr + this;
}
return this + paddingStr;
}
return this;
};
// синтаксис аналогичен printf
// 'Привет, %s!'.format('мир') -> "Привет, мир!"
// '%.1s.%.1s. %s'.format('Иван', 'Иванович', 'Иванов') -> "И.И. Иванов"
String.prototype.format = function() {
var i = 0,
args = arguments;
return this.replace(/%(?:%|(?:(|[+-]+)(|0|'.+?)([1-9]\d*)?(?:\.([1-9]\d*))?)?(s|d|f))/g, function(match, sign, padding, width, precision, type) {
if (match == '%%') {
return '%';
}
var val = args[i++];
if (type == 'd') {
val = Math.round(val);
}
else if (type == 'f') {
val = val.toFixed(precision ? precision : 6);
}
if (/\+/.test(sign) && val > 0) {
val = '+' + val;
}
if (type != 'f' && precision) {
val = val.substr(0, precision);
}
if (width) {
val = (val += '').pad(width, padding == '' ? ' ' : padding[0] == "'" ? padding.substr(1) : padding, /-/.test(sign) ? 'right' : 'left');
}
return val;
});
};
// this.name = 'Вася';
// console.log( 'Привет, ${name}!'.template(this) );
// "Привет, Вася!"
String.prototype.template = function(context) {
return this.replace(/\$\{(.*?)\}/g, function(match, name) {
return context[name];
});
};
Array.prototype.shuffle = function() {
var i = 0,
j = this.length,
n,
swap;
while (i < j) {
n = Math.floor(Math.random() * j);
swap = this[n];
this[n] = this[i];
this[i++] = swap;
}
};
// [1, 2, 3, 4, 5].rand() -> 4
Array.prototype.rand = function() {
return this[Math.floor(Math.random() * this.length)];
};
// ещё до хера кода