Check if the hashtag is a link in function .hashtagify

This commit is contained in:
Hincu Petru 2014-03-13 21:39:12 +00:00
parent a51c4f0ddc
commit 694dc7d80b
2 changed files with 28 additions and 5 deletions

View file

@ -108,11 +108,15 @@ $(function() {
};
textFormatter.hashtagify = function hashtagify(text){
var utf8WordCharcters =/(\s|^|>)#([\u0080-\uFFFF|\w|-]+|<3)/g
return text.replace(utf8WordCharcters, function(hashtag, preceeder, tagText) {
return preceeder + "<a href='/tags/" + tagText.toLowerCase() +
"' class='tag'>#" + tagText + "</a>"
})
var utf8WordCharcters =/(<a[^>]*>.*?<\/a>)|(\s|^|>)#([\u0080-\uFFFF|\w|-]+|&lt;3)/g;
return text.replace(utf8WordCharcters, function(result, linkTag, preceeder, tagText) {
if(linkTag)
return linkTag;
else
return preceeder + "<a href='/tags/" + tagText.toLowerCase() +
"' class='tag'>#" + tagText + "</a>";
});
};
textFormatter.mentionify = function mentionify(text, mentions) {

View file

@ -238,6 +238,25 @@ describe("app.helpers.textFormatter", function(){
expect(formattedText).toContain("/tags/parties")
})
it("doesn't create tag if the text is a link", function(){
var tags = ['diaspora', 'twitter', 'hrabrahabr'];
var text = $('<a/>', { href: 'http://me.co' }).html('#me')[0].outerHTML;
_.each(tags, function(tagName){
text += ' #'+tagName+',';
});
text += 'I love';
var formattedText = this.formatter.hashtagify(text);
var wrapper = $('<div>').html(formattedText);
expect(wrapper.find("a[href='http://me.co']").text()).toContain('#me');
_.each(tags, function(tagName){
expect(wrapper.find("a[href='/tags/"+tagName+"']").text()).toContain('#'+tagName);
});
})
})
})