Merge pull request #2464 from iguananaut/nb-out-links

Locate URLs in notebook text output and convert them to hyperlinks.
This commit is contained in:
Bussonnier Matthias 2012-10-31 08:52:51 -07:00
commit eba9044f2e
2 changed files with 22 additions and 0 deletions

View File

@ -379,8 +379,10 @@ var IPython = (function (IPython) {
OutputArea.prototype.append_text = function (data, element, extra_class) {
var toinsert = $("<div/>").addClass("box-flex1 output_subarea output_text");
// escape ANSI & HTML specials in plaintext:
data = utils.wrapUrls(data);
data = utils.fixConsole(data);
data = utils.fixCarriageReturn(data);
data = utils.autoLinkUrls(data);
if (extra_class){
toinsert.addClass(extra_class);
}

View File

@ -200,6 +200,24 @@ IPython.utils = (function (IPython) {
return txt;
}
// Locate URLs in plain text and wrap them in spaces so that they can be
// better picked out by autoLinkUrls even after the text has been
// converted to HTML
function wrapUrls(txt) {
// Note this regexp is a modified version of one from
// Markdown.Converter For now it only supports http(s) and ftp URLs,
// but could easily support others (though file:// should maybe be
// avoided)
var url_re = /(^|\W)(https?|ftp)(:\/\/[-A-Z0-9+&@#\/%?=~_|\[\]\(\)!:,\.;]*[-A-Z0-9+&@#\/%=~_|\[\]])($|\W)/gi;
return txt.replace(url_re, "$1 $2$3 $4");
}
// Locate a URL with spaces around it and convert that to a anchor tag
function autoLinkUrls(txt) {
return txt.replace(/ ((https?|ftp):[^'">\s]+) /gi,
"<a target=\"_blank\" href=\"$1\">$1</a>");
}
grow = function(element) {
// Grow the cell by hand. This is used upon reloading from JSON, when the
// autogrow handler is not called.
@ -261,6 +279,8 @@ IPython.utils = (function (IPython) {
keycodes : keycodes,
grow : grow,
fixCarriageReturn : fixCarriageReturn,
wrapUrls : wrapUrls,
autoLinkUrls : autoLinkUrls,
points_to_pixels : points_to_pixels
};