- allow links to local images

- allow wiki links to local urls
- disable automatic url / email linking since its broken right now
This commit is contained in:
j 2012-02-11 17:49:25 +05:30
parent 21854f653e
commit a976b674f4

View file

@ -5,6 +5,7 @@ Ox.parseEmailAddresses <f> Takes HTML and turns e-mail addresses into links
@*/ @*/
// fixme: no tests // fixme: no tests
// fixme: shouldn't this be formatEmailAddresses? // fixme: shouldn't this be formatEmailAddresses?
// fixme: fails for linked emails
Ox.parseEmailAddresses = function(html) { Ox.parseEmailAddresses = function(html) {
return html.replace( return html.replace(
/\b([0-9A-Z\.\+\-_]+@(?:[0-9A-Z\-]+\.)+[A-Z]{2,6})\b/gi, /\b([0-9A-Z\.\+\-_]+@(?:[0-9A-Z\-]+\.)+[A-Z]{2,6})\b/gi,
@ -61,7 +62,7 @@ Ox.parseHTML = (function() {
'<\/a>': '</a>' '<\/a>': '</a>'
}, },
img: { img: {
'<img [^<>]*?src="(https?:\/\/.+?)".*?>': '<img src="{1}">' '<img [^<>]*?src="((https?:\/\/|\/).+?)".*?>': '<img src="{1}">'
}, },
rtl: { rtl: {
'<rtl>': '<div style="direction: rtl">', '<rtl>': '<div style="direction: rtl">',
@ -79,7 +80,7 @@ Ox.parseHTML = (function() {
tags = tags || defaultTags; tags = tags || defaultTags;
// html = Ox.clean(html); fixme: can this be a parameter? // html = Ox.clean(html); fixme: can this be a parameter?
if (tags.indexOf('[]') > -1) { if (tags.indexOf('[]') > -1) {
html = html.replace(/\[(https?:\/\/.+?) (.+?)\]/gi, '<a href="$1">$2</a>'); html = html.replace(/\[((https?:\/\/|\/).+?) (.+?)\]/gi, '<a href="$1">$3</a>');
tags = tags.filter(function(tag) { tags = tags.filter(function(tag) {
return tag != '[]'; return tag != '[]';
}); });
@ -94,8 +95,9 @@ Ox.parseHTML = (function() {
}); });
}); });
html = Ox.encodeHTML(html); html = Ox.encodeHTML(html);
html = Ox.parseURLs(html); //fixme: both fail if urls/emails are already links
html = Ox.parseEmailAddresses(html); //html = Ox.parseURLs(html);
//html = Ox.parseEmailAddresses(html);
matches.forEach(function(match, i) { matches.forEach(function(match, i) {
html = html.replace(new RegExp(tab + i + tab, 'gi'), match); html = html.replace(new RegExp(tab + i + tab, 'gi'), match);
}); });
@ -146,9 +148,17 @@ Ox.parseURL = (function() {
/*@ /*@
Ox.parseURLs <f> Takes HTML and turns URLs into links Ox.parseURLs <f> Takes HTML and turns URLs into links
> Ox.parseURLs('http://foo.com, bar')
'<a href="http://foo.com">http://foo.com</a>, bar'
> Ox.parseURLs('http://foo.com/foobar?foo, bar')
'<a href="http://foo.com/foobar?foo">http://foo.com/foobar?foo</a>, bar'
> Ox.parseURLs('www.foo.com, bar')
'<a href="http://www.foo.com">www.foo.com</a>, bar'
> Ox.parseURLs('<a href="http://foo.com">http://foo.com</a> etc')
'<a href="http://foo.com">http://foo.com</a> etc'
@*/ @*/
// fixme: no tests
// fixme: shouldn't this be formatURLs? // fixme: shouldn't this be formatURLs?
// fixme: fails for urls inside links
Ox.parseURLs = function(html) { Ox.parseURLs = function(html) {
return html.replace( return html.replace(
/\b((https?:\/\/|www\.).+?)([\.,:;!\?\)\]]*?(\s|$))/gi, /\b((https?:\/\/|www\.).+?)([\.,:;!\?\)\]]*?(\s|$))/gi,