-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathTwitterMarkup.js
More file actions
45 lines (39 loc) · 1.38 KB
/
TwitterMarkup.js
File metadata and controls
45 lines (39 loc) · 1.38 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
/*
* Static object
* TwitterMarkup
*
* Description
* You can use this object to markup DOM elements that hold raw Twitter tweets urls, usernames and hashtags.
*
* TwitterMarkup by Geoff Hayward - http://geoffhayward.eu
*/
var TwitterMarkup = (function(){
/*
* Performs the Twiter markup transform on a given DOM element, and the element's sub-elements.
*/
function transform(element){
var ts = element.innerHTML;
ts = _parseURLs(ts);
ts = _parseUsernames(ts);
ts = _parseHashtags(ts);
element.innerHTML = ts;
};
function _parseURLs(tweetsString) {
return tweetsString.replace(/(https?:\/\/t.co\/[A-Z0-9-_]{10})/ig, function(match, group1) {
return '<a href="' + group1 + '" target="_blank">' + match + '</a>';
});
};
function _parseUsernames(tweetsString){
return tweetsString.replace(/[@]+([A-Z0-9_]+)/ig, function(match, group1) {
return '<a href="http://twitter.com/' + group1 + '" target="_blank">' + match + '</a>';
});
};
function _parseHashtags(tweetsString){
return tweetsString.replace(/[#]+([A-Za-z0-9-_]+)/ig, function(match, group1) {
return '<a href="http://twitter.com/search?q=%23' + group1 + '" target="_blank">' + match + '</a>';
});
};
return {
transform : transform
};
})();