var code = [];
for (var i = 1; i < 3; i++){
code.push(`[{
"text": "{{status [${i}]}}",
"callback_data": "{{tid [${i}]}}"
}], ` )
}
var myJSON = JSON.stringify(code);
resolve(myJSON);
function calculator(string){
if (!/[IVXLCDMZ\.,\d]+.*[+\-*\/].*[IVXLCDMZ\.,\d]+/.test(string))
throw new Error('Invalid input data, check expression for errors: ' + string );
string.replace(/[^IVXLCDMZ\.,\d+\-*\/()]/gi, function(badChar){
if (badChar === ' ') return ''
else throw new Error('Illegal symbol: ' + badChar);
});
const expr = string.replace(/[IVXLCDMZ\.,\d]+/gi, function(num){
if ( /^\d+([\.,]\d+)?$/.test(num))
return num.replace(/,/g,'.');
else if (/^[IVXLCDMZ]+$/i.test(num))
return roman2arabic(num)
else throw new Error('Unknown numeric: ' + num)
});
try {
return eval(expr)
} catch (e) {
throw new Error('Illegal expression: ' + expr)
}
}
function roman2arabic(str){
const digits = { I: 1, V: 5, X: 10, L: 50, C: 100, D: 500, M: 1000, Z: 2000 };
if (!/^[IVXLCDMZ]+$/i.test(str))
throw new Error('Illegal roman numeric: ' + str);
return str.toUpperCase().split('').reduce(function(r,v,i,arr){
const [ a, b, c ] = [ digits[arr[i]], digits[arr[i+1]] || undefined, digits[arr[i+2]] || undefined ];
if (b && c && a <= b && b < c)
throw new Error('Illegal roman numeric: ' + str);
return b > a ? r - a : r + a;
}, 0);
}
module.exports = calculator;
// в главной функции проверить входные данные регуляркой?
function entrypoint(str){
if (!str.test(/[IVXLCDMZ\.\d]+.*[+\-*\/].*[IVXLCDMZ\.\d]+/)) throw new Error('Invalid input data, check expression for errors: ' + str )
}
function decode(inputString){
const c = { I: 1, V: 5, X: 10, L: 50, C: 100, D: 500, M: 1000, Z: 2000 }
return inputString.toUpperCase().replace(/[^IVXLCDMZ()+\-*\.\/\d]/g, '').replace(/[IVXLCDMZ]{1,}/g, e => e.split('').reduce((r,v,i,arr) => c[arr[i+1]] && +c[arr[i+1]] > c[v] ? r - c[v] : r+c[v], 0))
}