@universis/common
Version:
Universis - common directives and services
49 lines • 4.97 kB
JavaScript
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