diff --git a/.gitignore b/.gitignore index af5c7e2e..029efd56 100644 --- a/.gitignore +++ b/.gitignore @@ -8,5 +8,5 @@ Makefile.gyp *.target.gyp.mk *.node example/*.log -docs/_build +docs/ npm-debug.log diff --git a/addons/linkify/linkify.js b/addons/linkify/linkify.js index 152404d4..f02c2023 100644 --- a/addons/linkify/linkify.js +++ b/addons/linkify/linkify.js @@ -30,8 +30,10 @@ negatedDomainCharacterSet = '[^\\da-z\\.-]+', domainBodyClause = '(' + domainCharacterSet + ')', tldClause = '([a-z\\.]{2,6})', - hostClause = domainBodyClause + '\\.' + tldClause, - pathClause = '([\\/\\w\\.-]*)*\\/?', + ipClause = '((\\d{1,3}\\.){3}\\d{1,3})', + portClause = '(:\\d{1,5})', + hostClause = '((' + domainBodyClause + '\\.' + tldClause + ')|' + ipClause + ')' + portClause + '?', + pathClause = '(\\/[\\/\\w\\.-]*)*', negatedPathCharacterSet = '[^\\/\\w\\.-]+', bodyClause = hostClause + pathClause, start = '(?:^|' + negatedDomainCharacterSet + ')(', @@ -41,7 +43,6 @@ lenientUrlRegex = new RegExp(lenientUrlClause), strictUrlRegex = new RegExp(strictUrlClause); - /** * Converts all valid URLs found in the given terminal line into * hyperlinks. The terminal line can be either the HTML element itself @@ -90,22 +91,13 @@ continue; } + var url = exports.findLinkMatch(node.data, lenient); - if (lenient) { - match = node.data.match(lenientUrlRegex); - } else { - match = node.data.match(strictUrlRegex); - } - - /** - * If no URL was found in the current text, return. - */ - if (!match) { + if (!url) { continue; } - var url = match[1], - startsWithProtocol = new RegExp('^' + protocolClause), + var startsWithProtocol = new RegExp('^' + protocolClause), urlHasProtocol = url.match(startsWithProtocol), href = (urlHasProtocol) ? url : 'http://' + url, link = '' + url + '', @@ -124,6 +116,20 @@ terminal.emit('linkify:line', line); }; + /** + * Finds a link within a block of text. + * + * @param {string} text - The text to search . + * @param {boolean} lenient - Whether to use the lenient search. + * @return {string} A URL. + */ + exports.findLinkMatch = function (text, lenient) { + var match = text.match(lenient ? lenientUrlRegex : strictUrlRegex); + if (!match || match.length === 0) { + return null; + } + return match[1]; + } /** * Converts all valid URLs found in the terminal view into hyperlinks. diff --git a/conf.json b/conf.json deleted file mode 100644 index b5c8e525..00000000 --- a/conf.json +++ /dev/null @@ -1,14 +0,0 @@ -{ - "source": { - "include": [ - "src/xterm.js", - "addons/attach/attach.js", - "addons/fit/fit.js", - "addons/fullscreen/fullscreen.js", - "addons/linkify/linkify.js" - ] - }, - "opts": { - "readme": "README.md" - } -} \ No newline at end of file diff --git a/demo/index.html b/demo/index.html index 92ccc94c..ff10a5cb 100644 --- a/demo/index.html +++ b/demo/index.html @@ -9,12 +9,16 @@ -