From 44c1b5ee408c55e4dfdc64ff2a5b10c6e5c91ab9 Mon Sep 17 00:00:00 2001 From: send Date: Fri, 25 Jul 2008 11:43:26 +0000 Subject: avoid false recognition, comma separated , pri git-svn-id: http://svn.coderepos.org/share/lang/javascript/vimperator-plugins/trunk@16424 d0d07461-0603-4401-acd4-de1884942a52 --- appendAnchor.js | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) (limited to 'appendAnchor.js') diff --git a/appendAnchor.js b/appendAnchor.js index 95873bc..ddb073c 100644 --- a/appendAnchor.js +++ b/appendAnchor.js @@ -3,7 +3,7 @@ * @name appendAnchor * @description append anchors to texts look like url. * @author SAKAI, Kazuaki - * @version 0.01 + * @version 0.02 * == VimperatorPlugin== */ @@ -15,17 +15,19 @@ var nodes = liberator.buffer.evaluateXPath( '/descendant::*[not(contains(" TITLE STYLE SCRIPT TEXTAREA XMP A ", concat(" ", local-name(), " ")))]/child::text()' ); - var regex = new RegExp("h?(ttps?):/+([a-zA-Z0-9][-_.!~*'()a-zA-Z0-9;/?:@&=+$,%#]+)"); + var regex = new RegExp("h?(ttps?):/+([a-zA-Z0-9][-_.!~*'()a-zA-Z0-9;/?:@&=+$,%#]+[-_~*(a-zA-Z0-9;/?@&=+$%#])"); + var range = doc.createRange(); var last; + var href; for (var i = 0; i < nodes.snapshotLength; i++) { var node = nodes.snapshotItem(i); range.selectNode(node); while (node && (last = range.toString().search(regex)) > -1) { - range.setStart(node, last); + range.setStart(node, last); range.setEnd(node, last + RegExp.lastMatch.length); + href = 'h' + RegExp.$1 + '://' + RegExp.$2; var anchor = doc.createElement('a'); - var href = 'h' + RegExp.$1 + '://' + RegExp.$2; range.insertNode(anchor); anchor.setAttribute('href', href); range.surroundContents(anchor); -- cgit v1.2.3