diff options
author | send | 2008-07-25 05:00:48 +0000 |
---|---|---|
committer | send | 2008-07-25 05:00:48 +0000 |
commit | 2bac9a98f22fca224f1b4a4407457feb8524381f (patch) | |
tree | b6030eec10f2b3e8b64414f4369fdbfc98faade7 /appendAnchor.js | |
parent | 359ae4bbaeb6d22270ce59102e9a85a75c2eab42 (diff) | |
download | vimperator-plugins-2bac9a98f22fca224f1b4a4407457feb8524381f.tar.bz2 |
change path to trunk
git-svn-id: http://svn.coderepos.org/share/lang/javascript/vimperator-plugins/trunk@16404 d0d07461-0603-4401-acd4-de1884942a52
Diffstat (limited to 'appendAnchor.js')
-rw-r--r-- | appendAnchor.js | 39 |
1 files changed, 39 insertions, 0 deletions
diff --git a/appendAnchor.js b/appendAnchor.js new file mode 100644 index 0000000..95873bc --- /dev/null +++ b/appendAnchor.js @@ -0,0 +1,39 @@ +/** + * == VimperatorPlugin== + * @name appendAnchor + * @description append anchors to texts look like url. + * @author SAKAI, Kazuaki + * @version 0.01 + * == VimperatorPlugin== + */ + +(function(){ + + liberator.commands.addUserCommand(['anc'], 'append anchors to texts look like url', + function(arg, special) { + var doc = window.content.document; + 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 range = doc.createRange(); + var last; + 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.setEnd(node, last + RegExp.lastMatch.length); + var anchor = doc.createElement('a'); + var href = 'h' + RegExp.$1 + '://' + RegExp.$2; + range.insertNode(anchor); + anchor.setAttribute('href', href); + range.surroundContents(anchor); + node = node.nextSibling.nextSibling; + range.selectNode(node); + } + } + range.detach(); + },{} + ); +})(); |