jsonblade
Version:
A powerful and modular JSON template engine with extensible filters
58 lines • 2.36 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.JSONBlade = void 0;
const filter_registry_1 = require("./filter-registry");
const json_template_utils_1 = require("./json-template.utils");
const template_config_1 = require("./template-config");
const string_filters_1 = require("./filters/string-filters");
const array_filters_1 = require("./filters/array-filters");
const object_filters_1 = require("./filters/object-filters");
const logic_filters_1 = require("./filters/logic-filters");
class JSONBlade {
constructor(options) {
this.filters = new Map();
if (options?.filters) {
for (const [k, v] of Object.entries(options.filters))
this.filters.set(k, v);
}
if (options?.config)
(0, template_config_1.setTemplateConfig)(options.config);
if (options?.useBuiltins) {
const config = (0, template_config_1.getTemplateConfig)();
const mergeGroup = (group) => {
Object.entries(group).forEach(([name, builtin]) => {
const globalOverride = (0, filter_registry_1.getFilter)(name);
const chosen = config.allowFilterOverride && globalOverride
? globalOverride
: builtin;
this.filters.set(name, chosen);
});
};
mergeGroup(string_filters_1.stringFilters);
mergeGroup(array_filters_1.arrayFilters);
mergeGroup(object_filters_1.objectFilters);
mergeGroup(logic_filters_1.logicFilters);
}
}
registerFilter(name, fn) {
this.filters.set(name, fn);
}
compile(template, data, functions) {
return (0, json_template_utils_1.compileJSONTemplate)(template, data, functions, (name) => {
return this.filters.get(name);
});
}
compileAsync(template, data, functions) {
return (0, json_template_utils_1.compileJSONTemplateAsync)(template, data, functions, (name) => {
return this.filters.get(name);
});
}
setConfig(config) {
(0, template_config_1.setTemplateConfig)(config);
}
getConfig() {
return (0, template_config_1.getTemplateConfig)();
}
}
exports.JSONBlade = JSONBlade;
//# sourceMappingURL=jsonblade.js.map