hexo
Version:
A fast, simple & powerful blog framework, powered by Node.js.
32 lines (22 loc) • 893 B
JavaScript
var rTag = /<a(.+?)>(.+?)<\/a>/g,
rHref = /href="(.*?)"/,
rProtocol = /^https?:\/{2}/,
rTarget = /target="_blank"/;
module.exports = function(data, callback){
var config = hexo.config;
if (!config.external_link) return callback();
data.content = data.content.replace(rTag, function(match, attr, title){
// Exit if the link has target="_blank" attribute
if (rTarget.test(attr)) return match;
var href = attr.match(rHref);
// Exit if the href attribute not exists
if (!href) return match;
var url = href[1];
// Exit if the link doesn't have protocol, which means it's a internal link
if (!rProtocol.test(url)) return match;
// Exit if the url is started with site url
if (url.substring(0, config.url.length) === config.url) return match;
return '<a' + attr + ' target="_blank">' + title + '</a>';
});
callback(null, data);
};