blob: c00cc46c6d9b9d8cee0b72356740015cace18a1c (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
|
import { Pipe, PipeTransform } from '@angular/core';
@Pipe({
name: 'searchHighlight'
})
export class SearchHighlightPipe implements PipeTransform {
transform(value: string, args: string): string {
if (!args) {
return value;
}
args = this.escapeRegExp(args);
const regex = new RegExp(args, 'gi');
const match = value.match(regex);
if (!match) {
return value;
}
return value.replace(regex, '<mark>$&</mark>');
}
private escapeRegExp(str: string) {
// $& means the whole matched string
return str.replace(/[.*+?^${}()|[\]\\]/g, '\\$&');
}
}
|