@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
JavaScript
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=