UNPKG

jsonblade

Version:

A powerful and modular JSON template engine with extensible filters

58 lines 2.36 kB
"use strict"; 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