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;
}
}