UNPKG

@universis/common

Version:

Universis - common directives and services

49 lines 4.97 kB
import { Pipe } from '@angular/core'; import { template } from 'lodash'; import * as i0 from "@angular/core"; /** * Template Pipe is an impure pipe that can escape * HTML and interpolated data properties and * execute JavaScript in "evaluate" delimiters */ export class TemplatePipe { constructor() { } /** * Uses lodash template function to generate a string * from a given template escaping the delimiters. It * deletes the template source after its initialization, * generates the string and nullifies the compiled template * function variable to be garbage-collected. * @param {string} inputTemplate: The template used to generate the string * @param {any} value: The parameter passed to compiled template function * @param {Object | undefined} options: Custom options to pass to lodash template */ transform(inputTemplate, value, options) { let _tpl; if (options !== undefined) { /* lodash doesn't throw error when options are not valid, so there is no need to add a try catch block */ _tpl = template(inputTemplate, options); } else { _tpl = template(inputTemplate); } delete _tpl.source; const _res = _tpl(value); _tpl = null; return _res; } } TemplatePipe.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: TemplatePipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); TemplatePipe.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "15.2.10", ngImport: i0, type: TemplatePipe, name: "template", pure: false }); i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: TemplatePipe, decorators: [{ type: Pipe, args: [{ name: 'template', pure: false }] }], ctorParameters: function () { return []; } }); //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGVtcGxhdGUucGlwZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9zaGFyZWQvcGlwZXMvdGVtcGxhdGUucGlwZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsSUFBSSxFQUFnQixNQUFNLGVBQWUsQ0FBQztBQUNsRCxPQUFPLEVBQUMsUUFBUSxFQUFtQixNQUFNLFFBQVEsQ0FBQzs7QUFFbEQ7Ozs7R0FJRztBQUtILE1BQU0sT0FBTyxZQUFZO0lBQ3ZCO0lBQ0EsQ0FBQztJQUVEOzs7Ozs7Ozs7T0FTRztJQUNILFNBQVMsQ0FBQyxhQUFxQixFQUFFLEtBQVUsRUFBRSxPQUFzQztRQUNqRixJQUFJLElBQUksQ0FBQztRQUNULElBQUksT0FBTyxLQUFLLFNBQVMsRUFBRTtZQUN6Qjs7O2VBR0c7WUFDSCxJQUFJLEdBQUcsUUFBUSxDQUFDLGFBQWEsRUFBRSxPQUFPLENBQUMsQ0FBQztTQUN6QzthQUFNO1lBQ0wsSUFBSSxHQUFHLFFBQVEsQ0FBQyxhQUFhLENBQUMsQ0FBQztTQUNoQztRQUNELE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQztRQUNuQixNQUFNLElBQUksR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDekIsSUFBSSxHQUFHLElBQUksQ0FBQztRQUNaLE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQzs7MEdBN0JVLFlBQVk7d0dBQVosWUFBWTs0RkFBWixZQUFZO2tCQUp4QixJQUFJO21CQUFDO29CQUNKLElBQUksRUFBRSxVQUFVO29CQUNoQixJQUFJLEVBQUUsS0FBSztpQkFDWiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7UGlwZSwgUGlwZVRyYW5zZm9ybX0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge3RlbXBsYXRlLCBUZW1wbGF0ZVNldHRpbmdzfSBmcm9tICdsb2Rhc2gnO1xuXG4vKipcbiAqICBUZW1wbGF0ZSBQaXBlIGlzIGFuIGltcHVyZSBwaXBlIHRoYXQgY2FuIGVzY2FwZVxuICogIEhUTUwgYW5kIGludGVycG9sYXRlZCBkYXRhIHByb3BlcnRpZXMgYW5kXG4gKiAgZXhlY3V0ZSBKYXZhU2NyaXB0IGluIFwiZXZhbHVhdGVcIiBkZWxpbWl0ZXJzXG4gKi9cbkBQaXBlKHtcbiAgbmFtZTogJ3RlbXBsYXRlJyxcbiAgcHVyZTogZmFsc2Vcbn0pXG5leHBvcnQgY2xhc3MgVGVtcGxhdGVQaXBlIGltcGxlbWVudHMgUGlwZVRyYW5zZm9ybSB7XG4gIGNvbnN0cnVjdG9yKCkge1xuICB9XG5cbiAgLyoqXG4gICAqIFVzZXMgbG9kYXNoIHRlbXBsYXRlIGZ1bmN0aW9uIHRvIGdlbmVyYXRlIGEgc3RyaW5nXG4gICAqIGZyb20gYSBnaXZlbiB0ZW1wbGF0ZSBlc2NhcGluZyB0aGUgZGVsaW1pdGVycy4gSXRcbiAgICogZGVsZXRlcyB0aGUgdGVtcGxhdGUgc291cmNlIGFmdGVyIGl0cyBpbml0aWFsaXphdGlvbixcbiAgICogZ2VuZXJhdGVzIHRoZSBzdHJpbmcgYW5kIG51bGxpZmllcyB0aGUgY29tcGlsZWQgdGVtcGxhdGVcbiAgICogZnVuY3Rpb24gdmFyaWFibGUgdG8gYmUgZ2FyYmFnZS1jb2xsZWN0ZWQuXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBpbnB1dFRlbXBsYXRlOiBUaGUgdGVtcGxhdGUgdXNlZCB0byBnZW5lcmF0ZSB0aGUgc3RyaW5nXG4gICAqIEBwYXJhbSB7YW55fSB2YWx1ZTogVGhlIHBhcmFtZXRlciBwYXNzZWQgdG8gY29tcGlsZWQgdGVtcGxhdGUgZnVuY3Rpb25cbiAgICogQHBhcmFtIHtPYmplY3QgfCB1bmRlZmluZWR9IG9wdGlvbnM6IEN1c3RvbSBvcHRpb25zIHRvIHBhc3MgdG8gbG9kYXNoIHRlbXBsYXRlXG4gICAqL1xuICB0cmFuc2Zvcm0oaW5wdXRUZW1wbGF0ZTogc3RyaW5nLCB2YWx1ZTogYW55LCBvcHRpb25zPzogVGVtcGxhdGVTZXR0aW5ncyB8IHVuZGVmaW5lZCk6IGFueSB7XG4gICAgbGV0IF90cGw7XG4gICAgaWYgKG9wdGlvbnMgIT09IHVuZGVmaW5lZCkge1xuICAgICAgLypcbiAgICAgICBsb2Rhc2ggZG9lc24ndCB0aHJvdyBlcnJvciB3aGVuIG9wdGlvbnMgYXJlIG5vdCB2YWxpZCwgc29cbiAgICAgICB0aGVyZSBpcyBubyBuZWVkIHRvIGFkZCBhIHRyeSBjYXRjaCBibG9ja1xuICAgICAgICovXG4gICAgICBfdHBsID0gdGVtcGxhdGUoaW5wdXRUZW1wbGF0ZSwgb3B0aW9ucyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIF90cGwgPSB0ZW1wbGF0ZShpbnB1dFRlbXBsYXRlKTtcbiAgICB9XG4gICAgZGVsZXRlIF90cGwuc291cmNlO1xuICAgIGNvbnN0IF9yZXMgPSBfdHBsKHZhbHVlKTtcbiAgICBfdHBsID0gbnVsbDtcbiAgICByZXR1cm4gX3JlcztcbiAgfVxufVxuIl19