@opengis/fastify-table
Version:
core-plugins
50 lines (47 loc) • 1.71 kB
JavaScript
/**
* Хелпер для виконання математичних операцій з числами
*
* @summary Дії над числами. Дозволяє виконання простих математичних операцій.
* @priority 3
* @type helper
* @tag math
* @alias _math
* @example
* {{_math operator='-' arg1=10 arg2=5}}
* @descr Отримання різниці між arg1 та arg2
* @example
* {{_math '1' '+' '1'}}
* @descr Виконання складання довжини масиву + 2
* @param {Object} operator Оператор для дії з числами
* @param {Object} arg1 Перше число для дії
* @param {Object} arg2 Друге число для дії
* @param {Array} args[0]] Перше число для дії
* @param {Array} args[1]] Оператор для дії з числами
* @param {Array} args[2]] Друге число для дії
* @returns {String} Returns HTML
*/
export default function _math(...args) {
const options = args.pop();
const opt = options.hash;
const operator = opt.operator ? opt.operator : args[1];
opt.arg1 = (opt.arg1 || args[0]) - 0;
opt.arg2 = (opt.arg2 || args[2]) - 0;
if (+opt.arg1 !== 0 && !opt.arg1) return '';
if (+opt.arg2 !== 0 && !opt.arg2) return '';
switch (operator) {
case '/':
return opt.arg1 / opt.arg2;
case '%':
return opt.arg1 % opt.arg2;
case '*':
return opt.arg1 * opt.arg2;
case '-':
return opt.arg1 - opt.arg2;
case '+':
return opt.arg1 + opt.arg2;
case '.%':
return `${((opt.arg1 * 100) / opt.arg2).toFixed(0)}%`;
default:
return 'operator is not defined';
}
}