function gEncodeToHTML(str) { if (typeof str !== 'string') return str; return str.replace(/&/g, '&') .replace(//g, '>') .replace(/"/g, '"') .replace(/'/g, '''); } function gDecodeFromHTML(str) { if (typeof str !== 'string') return str; return str.replace(/'/g, "'") .replace(/"/g, '"') .replace(/>/g, '>') .replace(/</g, '<') .replace(/&/g, '&'); } function FullObjectCopy(obj) { var newObj = Object.create(Object.getPrototypeOf(obj)); return Object.assign(newObj, obj); } function FullArrayCopy(arr) { var res = []; arr.forEach(function(element) { var copyElement = FullObjectCopy(element); res.push(copyElement); }); return res; } function formatString(string, params) { return string.replace(/{(\d+)}/g, (match, index) => { return typeof params[index] !== 'undefined' ? params[index] : match; }); } Array.prototype.swap = function (x, y) { var b = this[x]; this[x] = this[y]; this[y] = b; return this; }