@asi-ngtools/lib
Version:
This project is a little components library, simple to use, which will help you to simplify your project.
47 lines (46 loc) • 4.82 kB
JavaScript
/**
* @fileoverview added by tsickle
* @suppress {checkTypes,extraRequire,uselessCode} checked by tsc
*/
import { Pipe } from '@angular/core';
import { isEmpty } from '../native-helper';
export class AsiHighlighPipe {
constructor() {
}
/**
* @param {?} text
* @param {?} toHighlight
* @return {?}
*/
transform(text, toHighlight) {
if (!isEmpty(text) && !isEmpty(toHighlight)) {
/** @type {?} */
let pos = 0;
/** @type {?} */
let debut = 0;
/** @type {?} */
const rechercheNormalisee = toHighlight.normalize('NFD').replace(/[\u0300-\u036f]/g, '').toLocaleLowerCase();
/** @type {?} */
const outputNormalise = text.normalize('NFD').replace(/[\u0300-\u036f]/g, '').toLocaleLowerCase();
/** @type {?} */
let highlightedOutput = '';
while (pos !== -1) {
pos = outputNormalise.indexOf(rechercheNormalisee, debut);
if (pos !== -1) {
highlightedOutput += text.slice(debut, pos) +
'<span class="highlight">' + text.slice(pos, pos + toHighlight.length) + '</span>';
debut = pos + rechercheNormalisee.length;
}
}
highlightedOutput += text.slice(debut);
text = highlightedOutput;
}
return text;
}
}
AsiHighlighPipe.decorators = [
{ type: Pipe, args: [{ name: 'asiHighligh' },] }
];
/** @nocollapse */
AsiHighlighPipe.ctorParameters = () => [];
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXNpLWhpZ2hsaWdodC5waXBlLmpzIiwic291cmNlUm9vdCI6Im5nOi8vQGFzaS1uZ3Rvb2xzL2xpYi8iLCJzb3VyY2VzIjpbImxpYi9waXBlcy9hc2ktaGlnaGxpZ2h0LnBpcGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7OztBQUFBLE9BQU8sRUFBRSxJQUFJLEVBQWlCLE1BQU0sZUFBZSxDQUFDO0FBQ3BELE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUczQyxNQUFNO0lBQ0o7S0FDQzs7Ozs7O0lBQ0QsU0FBUyxDQUFDLElBQVksRUFBRSxXQUFtQjtRQUN6QyxFQUFFLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLENBQUM7O1lBQzVDLElBQUksR0FBRyxHQUFHLENBQUMsQ0FBQzs7WUFDWixJQUFJLEtBQUssR0FBRyxDQUFDLENBQUM7O1lBR2QsTUFBTSxtQkFBbUIsR0FBRyxXQUFXLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxDQUFDLE9BQU8sQ0FBQyxrQkFBa0IsRUFBRSxFQUFFLENBQUMsQ0FBQyxpQkFBaUIsRUFBRSxDQUFDOztZQUM3RyxNQUFNLGVBQWUsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxDQUFDLE9BQU8sQ0FBQyxrQkFBa0IsRUFBRSxFQUFFLENBQUMsQ0FBQyxpQkFBaUIsRUFBRSxDQUFDOztZQUVsRyxJQUFJLGlCQUFpQixHQUFHLEVBQUUsQ0FBQztZQUMzQixPQUFPLEdBQUcsS0FBSyxDQUFDLENBQUMsRUFBRSxDQUFDO2dCQUNsQixHQUFHLEdBQUcsZUFBZSxDQUFDLE9BQU8sQ0FBQyxtQkFBbUIsRUFBRSxLQUFLLENBQUMsQ0FBQztnQkFDMUQsRUFBRSxDQUFDLENBQUMsR0FBRyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztvQkFDZixpQkFBaUIsSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssRUFBRSxHQUFHLENBQUM7d0JBQ3pDLDBCQUEwQixHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyxXQUFXLENBQUMsTUFBTSxDQUFDLEdBQUcsU0FBUyxDQUFDO29CQUNyRixLQUFLLEdBQUcsR0FBRyxHQUFHLG1CQUFtQixDQUFDLE1BQU0sQ0FBQztpQkFDMUM7YUFDRjtZQUNELGlCQUFpQixJQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDdkMsSUFBSSxHQUFHLGlCQUFpQixDQUFDO1NBQzFCO1FBQ0QsTUFBTSxDQUFDLElBQUksQ0FBQztLQUNiOzs7WUExQkYsSUFBSSxTQUFDLEVBQUUsSUFBSSxFQUFFLGFBQWEsRUFBRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFBpcGUsIFBpcGVUcmFuc2Zvcm0gfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IGlzRW1wdHkgfSBmcm9tICcuLi9uYXRpdmUtaGVscGVyJztcblxuQFBpcGUoeyBuYW1lOiAnYXNpSGlnaGxpZ2gnIH0pXG5leHBvcnQgY2xhc3MgQXNpSGlnaGxpZ2hQaXBlIGltcGxlbWVudHMgUGlwZVRyYW5zZm9ybSB7XG4gIGNvbnN0cnVjdG9yKCkge1xuICB9XG4gIHRyYW5zZm9ybSh0ZXh0OiBzdHJpbmcsIHRvSGlnaGxpZ2h0OiBzdHJpbmcpIHtcbiAgICBpZiAoIWlzRW1wdHkodGV4dCkgJiYgIWlzRW1wdHkodG9IaWdobGlnaHQpKSB7XG4gICAgICBsZXQgcG9zID0gMDtcbiAgICAgIGxldCBkZWJ1dCA9IDA7XG5cbiAgICAgIC8vIGxvd2VyIGNhc2UgYW5kIG5vcm1hbGl6ZVxuICAgICAgY29uc3QgcmVjaGVyY2hlTm9ybWFsaXNlZSA9IHRvSGlnaGxpZ2h0Lm5vcm1hbGl6ZSgnTkZEJykucmVwbGFjZSgvW1xcdTAzMDAtXFx1MDM2Zl0vZywgJycpLnRvTG9jYWxlTG93ZXJDYXNlKCk7XG4gICAgICBjb25zdCBvdXRwdXROb3JtYWxpc2UgPSB0ZXh0Lm5vcm1hbGl6ZSgnTkZEJykucmVwbGFjZSgvW1xcdTAzMDAtXFx1MDM2Zl0vZywgJycpLnRvTG9jYWxlTG93ZXJDYXNlKCk7XG5cbiAgICAgIGxldCBoaWdobGlnaHRlZE91dHB1dCA9ICcnO1xuICAgICAgd2hpbGUgKHBvcyAhPT0gLTEpIHtcbiAgICAgICAgcG9zID0gb3V0cHV0Tm9ybWFsaXNlLmluZGV4T2YocmVjaGVyY2hlTm9ybWFsaXNlZSwgZGVidXQpO1xuICAgICAgICBpZiAocG9zICE9PSAtMSkge1xuICAgICAgICAgIGhpZ2hsaWdodGVkT3V0cHV0ICs9IHRleHQuc2xpY2UoZGVidXQsIHBvcykgK1xuICAgICAgICAgICAgJzxzcGFuIGNsYXNzPVwiaGlnaGxpZ2h0XCI+JyArIHRleHQuc2xpY2UocG9zLCBwb3MgKyB0b0hpZ2hsaWdodC5sZW5ndGgpICsgJzwvc3Bhbj4nO1xuICAgICAgICAgIGRlYnV0ID0gcG9zICsgcmVjaGVyY2hlTm9ybWFsaXNlZS5sZW5ndGg7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGhpZ2hsaWdodGVkT3V0cHV0ICs9IHRleHQuc2xpY2UoZGVidXQpO1xuICAgICAgdGV4dCA9IGhpZ2hsaWdodGVkT3V0cHV0O1xuICAgIH1cbiAgICByZXR1cm4gdGV4dDtcbiAgfVxufVxuIl19