Skip to content

Instantly share code, notes, and snippets.

@chy4egg
Last active May 10, 2018 09:58
Show Gist options
  • Save chy4egg/b83b74e84f1bb0da122fb75492a0a417 to your computer and use it in GitHub Desktop.
Save chy4egg/b83b74e84f1bb0da122fb75492a0a417 to your computer and use it in GitHub Desktop.
Data formatting methods (js) es6
const formatData = {
// Граммы переводит в килограммы
weight : function (weight) {
weight = parseFloat(weight);
let dimension = '';
if (weight < 1000) {
dimension = ' г';
} else {
dimension = ' кг';
weight = (weight / 1000);
}
return (weight + dimension);
},
/**
* Возвращает строку с числом + правильным окончанием числительного
* @param number
* @return {string}
*/
age : function (number) {
let cases = [2, 0, 1, 1, 1, 2];
let titles = ['год', 'года', 'лет'];
return number + " " + titles[(number % 100 > 4 && number % 100 < 20) ? 2 : cases[(number % 10 < 5) ? number % 10 : 5]];
},
/**
* Возвращает кол-во бонусов + окончание в правильном склонении
* @param number
* @return number + ending {string}
*/
bonusEnding(number) {
let cases = [2, 0, 1, 1, 1, 2];
let titles = ['бонус', 'бонуса', 'бонусов'];
return number + " " + titles[(number % 100 > 4 && number % 100 < 20) ? 2 : cases[(number % 10 < 5) ? number % 10 : 5]];
},
/**
* Возвращает кол-во чего угодно +окончание в правильном склонении
* @param number {Number}
* @param titles {Array}
* @return {string}
*/
numberName : function (number, titles) {
let cases = [2, 0, 1, 1, 1, 2];
return number + " " + titles[(number % 100 > 4 && number % 100 < 20) ? 2 : cases[(number % 10 < 5) ? number % 10 : 5]];
},
/**
* Возвращает кол-во чего угодно + окончание в правильном склонении (ES6 шаблонной строкой)
* @param number {number}
* @return value + ending {ES6 string template}
* @example numberNameTemplate(100, ['бонус', 'бонуса', 'бонусов']); - должен вернуть "100 бонусов" шаблонной строкой.
*/
numberNameTemplate(number, titles) {
let cases = [2, 0, 1, 1, 1, 2];
return `<span class="v-custom-field">
<span class="v-custom-field__value">${number} </span>
<span class="v-custom-field__ending">${titles[(number % 100 > 4 && number % 100 < 20) ? 2 : cases[(number % 10 < 5) ? number % 10 : 5]]}</span>
</span>`;
},
dateJsToStr(jsDate) {
return ((jsDate.getDate()<10) ? ("0" + jsDate.getDate()) : jsDate.getDate()) + '.' + ((jsDate.getMonth()+1) ? ("0" + jsDate.getMonth()) : jsDate.getMonth()) + '.' + jsDate.getFullYear();
},
// форматирования ценника (принимает число,возвращает форматированную строку)
// (123456789.12345).formatMoney(2, '.', ',');
price : function numberWithSpaces(x) {
return x.toString().replace(/\B(?=(\d{3})+(?!\d))/g, " ");
},
formatPhone(phone) {
return phone.replace(/(\d{1})(\d{3})(\d{3})(\d{2})(\d{2})/, "+$1 ($2) $3-$4-$5");
}
};
export default formatData;
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment