From dc0db57b36bb6cd47dfea835a315f61b34ed8e1b Mon Sep 17 00:00:00 2001
From: Misko Hevery
Date: Wed, 20 Jan 2010 06:52:50 -0800
Subject: tweek tweeter
---
src/Filters.js | 27 ++++++++++++++++-----------
1 file changed, 16 insertions(+), 11 deletions(-)
(limited to 'src')
diff --git a/src/Filters.js b/src/Filters.js
index 833d5630..a0bedaaf 100644
--- a/src/Filters.js
+++ b/src/Filters.js
@@ -296,20 +296,25 @@ foreach({
},
'linky': function(text){
+ if (!text) return text;
function regExpEscape(text) {
return text.replace(/([\/\.\*\+\?\|\(\)\[\]\{\}\\])/g, '\\$1');
}
- var URL = /(ftp|http|https):\/\/([^\(\)|\s]+)/gm;
- var html = text;
- var dups = {};
- foreach(text.match(URL)||[], function(url){
- url = url.replace(/\.$/, '');
- if (!dups[url]) {
- html = html.replace(new RegExp(regExpEscape(url), 'gm'), ''+url+'');
- dups[url] = true;
- }
- });
- return new angularFilter.Meta({text:text, html:html});
+ var URL = /(ftp|http|https|mailto):\/\/([^\(\)|\s]+)/;
+ var match;
+ var raw = text;
+ var html = [];
+ while (match=raw.match(URL)) {
+ var url = match[0].replace(/[\.\;\,\(\)\{\}\<\>]$/,'');
+ var i = raw.indexOf(url);
+ html.push(escapeHtml(raw.substr(0, i)));
+ html.push('');
+ html.push(url);
+ html.push('');
+ raw = raw.substring(i + url.length);
+ }
+ html.push(escapeHtml(raw));
+ return new angularFilter.Meta({text:text, html:html.join('')});
}
}, function(v,k){angularFilter[k] = v;});
--
cgit v1.2.3