UNPKG

@ogs-gmbh/ngx-template-engine

Version:

A library providing a flexible and efficient template engine for dynamic content rendering. It enables easy integration of customizable templates within Angular applications.

45 lines 5.99 kB
import { inject, Pipe } from "@angular/core"; import { transformAst } from "../transformer"; import { parseAst } from "../parser"; import { TEMPLATE_ENGINE_CONFIG_TOKEN } from "../token"; import * as i0 from "@angular/core"; export class TemplatePipe { _config = inject(TEMPLATE_ENGINE_CONFIG_TOKEN, { optional: true }); _boostrapValue = null; _parseAndTransform(value, data) { const ast = parseAst(value); return transformAst(ast, data); } _updateBoostrapValue(value) { if (this._boostrapValue !== null) return; this._boostrapValue = value; } transform(value, data, fallbackOnError) { const shouldFallbackOnError = fallbackOnError ?? this._config?.fallbackOnError; if (!shouldFallbackOnError) { const transformedValue = this._parseAndTransform(value, data); this._updateBoostrapValue(transformedValue); return transformedValue; } try { const transformedValue = this._parseAndTransform(value, data); this._updateBoostrapValue(transformedValue); return transformedValue; } catch { if (this._boostrapValue === null) throw new Error("Expected an initial fallback value"); return this._boostrapValue; } } static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: TemplatePipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); static ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "18.2.13", ngImport: i0, type: TemplatePipe, name: "template" }); } i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: TemplatePipe, decorators: [{ type: Pipe, args: [{ name: "template" }] }] }); //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGVtcGxhdGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvcGlwZXMvdGVtcGxhdGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUEsT0FBTyxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQWlCLE1BQU0sZUFBZSxDQUFDO0FBQzVELE9BQU8sRUFBeUIsWUFBWSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFckUsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUNyQyxPQUFPLEVBQUUsNEJBQTRCLEVBQXdCLE1BQU0sVUFBVSxDQUFDOztBQUs5RSxNQUFNLE9BQU8sWUFBWTtJQUNOLE9BQU8sR0FBZ0MsTUFBTSxDQUFDLDRCQUE0QixFQUFFLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7SUFFekcsY0FBYyxHQUFrQixJQUFJLENBQUM7SUFFckMsa0JBQWtCLENBQUUsS0FBYSxFQUFFLElBQTRCO1FBQ3JFLE1BQU0sR0FBRyxHQUFRLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUVqQyxPQUFPLFlBQVksQ0FBQyxHQUFHLEVBQUUsSUFBSSxDQUFDLENBQUM7SUFDakMsQ0FBQztJQUVPLG9CQUFvQixDQUFFLEtBQWE7UUFDekMsSUFBSSxJQUFJLENBQUMsY0FBYyxLQUFLLElBQUk7WUFDOUIsT0FBTztRQUVULElBQUksQ0FBQyxjQUFjLEdBQUcsS0FBSyxDQUFDO0lBQzlCLENBQUM7SUFFTSxTQUFTLENBQUMsS0FBYSxFQUFFLElBQTRCLEVBQUUsZUFBeUI7UUFDckYsTUFBTSxxQkFBcUIsR0FBd0IsZUFBZSxJQUFJLElBQUksQ0FBQyxPQUFPLEVBQUUsZUFBZSxDQUFDO1FBRXBHLElBQUksQ0FBQyxxQkFBcUIsRUFBRSxDQUFDO1lBQzNCLE1BQU0sZ0JBQWdCLEdBQUcsSUFBSSxDQUFDLGtCQUFrQixDQUFDLEtBQUssRUFBRSxJQUFJLENBQUMsQ0FBQztZQUU5RCxJQUFJLENBQUMsb0JBQW9CLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztZQUU1QyxPQUFPLGdCQUFnQixDQUFDO1FBQzFCLENBQUM7UUFFRCxJQUFJLENBQUM7WUFDSCxNQUFNLGdCQUFnQixHQUFHLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFDLENBQUM7WUFFOUQsSUFBSSxDQUFDLG9CQUFvQixDQUFDLGdCQUFnQixDQUFDLENBQUM7WUFFNUMsT0FBTyxnQkFBZ0IsQ0FBQztRQUMxQixDQUFDO1FBQUMsTUFBTSxDQUFDO1lBQ1AsSUFBSSxJQUFJLENBQUMsY0FBYyxLQUFLLElBQUk7Z0JBQzlCLE1BQU0sSUFBSSxLQUFLLENBQUMsb0NBQW9DLENBQUMsQ0FBQztZQUV4RCxPQUFPLElBQUksQ0FBQyxjQUFjLENBQUM7UUFDN0IsQ0FBQztJQUNILENBQUM7d0dBekNVLFlBQVk7c0dBQVosWUFBWTs7NEZBQVosWUFBWTtrQkFIeEIsSUFBSTttQkFBQztvQkFDSixJQUFJLEVBQUUsVUFBVTtpQkFDakIiLCJzb3VyY2VzQ29udGVudCI6WyIvKiBlc2xpbnQtZGlzYWJsZSAqL1xuXG5pbXBvcnQgeyBpbmplY3QsIFBpcGUsIFBpcGVUcmFuc2Zvcm0gfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xuaW1wb3J0IHsgRGF0YUFycmF5LCBEYXRhUmVjb3JkLCB0cmFuc2Zvcm1Bc3QgfSBmcm9tIFwiLi4vdHJhbnNmb3JtZXJcIjtcbmltcG9ydCB7IEFzdCB9IGZyb20gXCIuLi9hc3RcIjtcbmltcG9ydCB7IHBhcnNlQXN0IH0gZnJvbSBcIi4uL3BhcnNlclwiO1xuaW1wb3J0IHsgVEVNUExBVEVfRU5HSU5FX0NPTkZJR19UT0tFTiwgVGVtcGxhdGVFbmdpbmVDb25maWcgfSBmcm9tIFwiLi4vdG9rZW5cIjtcblxuQFBpcGUoe1xuICBuYW1lOiBcInRlbXBsYXRlXCJcbn0pXG5leHBvcnQgY2xhc3MgVGVtcGxhdGVQaXBlIGltcGxlbWVudHMgUGlwZVRyYW5zZm9ybSB7XG4gIHByaXZhdGUgcmVhZG9ubHkgX2NvbmZpZzogVGVtcGxhdGVFbmdpbmVDb25maWcgfCBudWxsID0gaW5qZWN0KFRFTVBMQVRFX0VOR0lORV9DT05GSUdfVE9LRU4sIHsgb3B0aW9uYWw6IHRydWUgfSk7XG5cbiAgcHJpdmF0ZSBfYm9vc3RyYXBWYWx1ZTogc3RyaW5nIHwgbnVsbCA9IG51bGw7XG4gIFxuICBwcml2YXRlIF9wYXJzZUFuZFRyYW5zZm9ybSAodmFsdWU6IHN0cmluZywgZGF0YTogRGF0YVJlY29yZCB8IERhdGFBcnJheSk6IHN0cmluZyB7XG4gICAgY29uc3QgYXN0OiBBc3QgPSBwYXJzZUFzdCh2YWx1ZSk7XG5cbiAgICByZXR1cm4gdHJhbnNmb3JtQXN0KGFzdCwgZGF0YSk7XG4gIH1cblxuICBwcml2YXRlIF91cGRhdGVCb29zdHJhcFZhbHVlICh2YWx1ZTogc3RyaW5nKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuX2Jvb3N0cmFwVmFsdWUgIT09IG51bGwpXG4gICAgICByZXR1cm47XG5cbiAgICB0aGlzLl9ib29zdHJhcFZhbHVlID0gdmFsdWU7XG4gIH1cblxuICBwdWJsaWMgdHJhbnNmb3JtKHZhbHVlOiBzdHJpbmcsIGRhdGE6IERhdGFSZWNvcmQgfCBEYXRhQXJyYXksIGZhbGxiYWNrT25FcnJvcj86IGJvb2xlYW4pOiBzdHJpbmcge1xuICAgIGNvbnN0IHNob3VsZEZhbGxiYWNrT25FcnJvcjogYm9vbGVhbiB8IHVuZGVmaW5lZCA9IGZhbGxiYWNrT25FcnJvciA/PyB0aGlzLl9jb25maWc/LmZhbGxiYWNrT25FcnJvcjtcblxuICAgIGlmICghc2hvdWxkRmFsbGJhY2tPbkVycm9yKSB7XG4gICAgICBjb25zdCB0cmFuc2Zvcm1lZFZhbHVlID0gdGhpcy5fcGFyc2VBbmRUcmFuc2Zvcm0odmFsdWUsIGRhdGEpO1xuXG4gICAgICB0aGlzLl91cGRhdGVCb29zdHJhcFZhbHVlKHRyYW5zZm9ybWVkVmFsdWUpO1xuXG4gICAgICByZXR1cm4gdHJhbnNmb3JtZWRWYWx1ZTtcbiAgICB9XG5cbiAgICB0cnkge1xuICAgICAgY29uc3QgdHJhbnNmb3JtZWRWYWx1ZSA9IHRoaXMuX3BhcnNlQW5kVHJhbnNmb3JtKHZhbHVlLCBkYXRhKTtcblxuICAgICAgdGhpcy5fdXBkYXRlQm9vc3RyYXBWYWx1ZSh0cmFuc2Zvcm1lZFZhbHVlKTtcblxuICAgICAgcmV0dXJuIHRyYW5zZm9ybWVkVmFsdWU7XG4gICAgfSBjYXRjaCB7XG4gICAgICBpZiAodGhpcy5fYm9vc3RyYXBWYWx1ZSA9PT0gbnVsbClcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiRXhwZWN0ZWQgYW4gaW5pdGlhbCBmYWxsYmFjayB2YWx1ZVwiKTtcblxuICAgICAgcmV0dXJuIHRoaXMuX2Jvb3N0cmFwVmFsdWU7XG4gICAgfVxuICB9XG59XG4iXX0=