import { Pipe, PipeTransform } from '@angular/core'; /* * Transforms text containing URLs or E-mails to valid links/mailtos */ @Pipe({name: 'linkfy'}) export class LinkfyPipe implements PipeTransform { transform(message: string, pipeEnabled: boolean): string { if (pipeEnabled && message && message.length > 1) { let replacedText; let replacePatternProtocol; let replacePatternWWW; let replacePatternMailTo; // URLs starting with http://, https://, or ftp:// replacePatternProtocol = /(\b(https?|ftp):\/\/[-A-Z0-9+&@#\/%?=~_|!:,.;]*[-A-Z0-9+&@#\/%=~_|])/gim; replacedText = message.replace(replacePatternProtocol, '$1'); // URLs starting with "www." (ignoring // before it). replacePatternWWW = /(^|[^\/])(www\.[\S]+(\b|$))/gim; replacedText = replacedText.replace(replacePatternWWW, '$1$2'); // Change email addresses to mailto:: links. replacePatternMailTo = /(([a-zA-Z0-9\-\_\.])+@[a-zA-Z\_]+?(\.[a-zA-Z]{2,6})+)/gim; replacedText = replacedText.replace(replacePatternMailTo, '$1'); return replacedText; } else return message; } }