aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authoranekos2010-02-18 07:49:44 +0000
committeranekos2010-02-18 07:49:44 +0000
commit3028fb3b3bae6c9825eefb6aef5c940823e1d104 (patch)
treec59491a40fe7549a8634408be94869c532688260
parent9ac02add88b6d84b3f09227415db968f576b0541 (diff)
downloadvimperator-plugins-3028fb3b3bae6c9825eefb6aef5c940823e1d104.tar.bz2
URLが並んで複数アル場合に、初めの一つしか処置されない問題の応急処置
git-svn-id: http://svn.coderepos.org/share/lang/javascript/vimperator-plugins/trunk@36794 d0d07461-0603-4401-acd4-de1884942a52
-rw-r--r--appendAnchor.js58
1 files changed, 33 insertions, 25 deletions
diff --git a/appendAnchor.js b/appendAnchor.js
index 17ede34..76a92f0 100644
--- a/appendAnchor.js
+++ b/appendAnchor.js
@@ -3,7 +3,7 @@ let PLUGIN_INFO =
<name>appendAnchor</name>
<description>append anchors to texts look like url.</description>
<description lang="ja">リンク中の URL っぽいテキストにアンカーをつける。</description>
- <version>0.4.2</version>
+ <version>0.4.3</version>
<author>SAKAI, Kazuaki</author>
<minVersion>2.0pre</minVersion>
<maxVersion>2.3</maxVersion>
@@ -54,39 +54,47 @@ let PLUGIN_INFO =
// register command
liberator.modules.commands.addUserCommand(['anc'], 'append anchors to texts look like url',
function(arg) {
- const doc = window.content.document;
- const range = doc.createRange();
+ function append() {
+ let result = 0;
+ const doc = window.content.document;
+ const range = doc.createRange();
- let nodes = util.evaluateXPath(xpathQueryPlainText);
- for (let node in nodes) {
- while (node) {
- range.selectNode(node)
+ let nodes = util.evaluateXPath(xpathQueryPlainText);
+ for (let node in nodes) {
+ while (node) {
+ range.selectNode(node)
- // search string like URL
- let start = range.toString().search(regexpLikeURL);
- // go to next node when there is nothing look like URL in current node
- if (!(start > -1)) break;
+ // search string like URL
+ let start = range.toString().search(regexpLikeURL);
+ // go to next node when there is nothing look like URL in current node
+ if (!(start > -1)) break;
- // build URL
- let href = 'h' + RegExp.$1 + '://' + RegExp.$2;
+ result++;
- // reset range
- range.setStart(node, start);
- range.setEnd(node, start + RegExp.lastMatch.length);
+ // build URL
+ let href = 'h' + RegExp.$1 + '://' + RegExp.$2;
- // build anchor element
- let anchor = doc.createElement('a');
- anchor.setAttribute('href', href);
- range.surroundContents(anchor);
+ // reset range
+ range.setStart(node, start);
+ range.setEnd(node, start + RegExp.lastMatch.length);
- // insert
- range.insertNode(anchor);
+ // build anchor element
+ let anchor = doc.createElement('a');
+ anchor.setAttribute('href', href);
+ range.surroundContents(anchor);
- // iterate
- node = node.nextSibling.nextSibling.nextSibling;
+ // insert
+ range.insertNode(anchor);
+
+ // iterate
+ node = node.nextSibling.nextSibling.nextSibling;
+ }
}
+ range.detach();
+ return result;
}
- range.detach();
+ for (let i = 0; i < 20 && append(); i++)
+ ;
},
{},
true