Files
radixOS/public/helpers/comparisonHelpers.js
2026-04-22 11:55:23 +02:00

72 lines
2.8 KiB
JavaScript

const Handlebars = require('handlebars');
module.exports = {
toJSON: function(object) {
if(typeof object === 'object') {
return JSON.stringify(object);
} else {
throw 'no object type';
}
},
isObject: function(value, options) {
return typeof value === 'object' && value !== null && !Array.isArray(value) ? options.fn(this) : options.inverse(this);
},
isArray: function(value, options) {
return Array.isArray(value) ? options.fn(this) : options.inverse(this);
},
isRGB: function(value) {
return Array.isArray(value) && (value.length === 3 || value.length === 4);
},
rgbString: function(value) {
if (Array.isArray(value)) {
return value.length === 3
? `rgb(${value.join(',')})`
: value.length === 4
? `rgba(${value.join(',')})`
: '';
}
return '';
},
toArray: function(value) {
if (Array.isArray(value)) return value;
if (typeof value === "string") return [value];
return [];
},
replaceAll: function(string, pattern, replacement) {
return new Handlebars.SafeString(string.replaceAll(pattern, replacement) || '');
},
equaler: function(v1, operator, v2, options) {
switch (operator) {
case '==':
return (v1 == v2) ? options.fn(this) : options.inverse(this);
case '===':
return (v1 === v2) ? options.fn(this) : options.inverse(this);
case '!=':
return (v1 != v2) ? options.fn(this) : options.inverse(this);
case '!==':
return (v1 !== v2) ? options.fn(this) : options.inverse(this);
case '<':
return (v1 < v2) ? options.fn(this) : options.inverse(this);
case '<=':
return (v1 <= v2) ? options.fn(this) : options.inverse(this);
case '>':
return (v1 > v2) ? options.fn(this) : options.inverse(this);
case '>=':
return (v1 >= v2) ? options.fn(this) : options.inverse(this);
case '&&':
return (v1 && v2) ? options.fn(this) : options.inverse(this);
case '||':
return (v1 || v2) ? options.fn(this) : options.inverse(this);
case 'typeof':
return (typeof v1 === v2) ? options.fn(this) : options.inverse(this);
case 'like':
return (v1.indexOf(v2)) > -1 ? options.fn(this) : options.inverse(this);
case 'includes':
return (v1.includes(v2)) <= 0 ? options.inverse(this) : options.fn(this);
case '%':
return (v1 % v2) == 0 ? options.fn(this) : options.inverse(this);
default:
return options.inverse(this);
}
},
};