markup-tools
Version:
Utility to format markup
28 lines (24 loc) • 1.03 kB
JavaScript
module.exports = function(text, scheme) {
// Cribbed from https://github.com/twitter/twitter-text/blob/v1.14.7/js/twitter-text.js#L90
return String(text).replace(
/(^|[^a-zA-Z0-9_!#$%&*@@\/]|(^|[^a-zA-Z0-9_+~.-\/#]))[@@]([a-z][-\.a-z\d]+[a-z\d])/gi,
(match, preceeding1, preceeding2, user) => {
var userLower = user.toLowerCase();
var valid = userLower;
var filler1 = scheme ? scheme.replace(/\/$/, '') : '/@';
var filler2 = filler1 == '/@' ? '' : '/';
var preceedings = (preceeding1 || '') + (preceeding2 || ''); // include the preceeding matches if they exist
return valid
? preceedings +
'<a target="_blank" href="' +
filler1 +
filler2 +
userLower +
'">@' +
user +
'</a>'
: preceedings + '@' + user;
}
);
};
;