diff options
Diffstat (limited to 'auto_detect_link.js')
-rw-r--r-- | auto_detect_link.js | 25 |
1 files changed, 20 insertions, 5 deletions
diff --git a/auto_detect_link.js b/auto_detect_link.js index 263b1f6..a77df53 100644 --- a/auto_detect_link.js +++ b/auto_detect_link.js @@ -2,7 +2,7 @@ // @name Auto Detect Link // @description-ja (次|前)っぽいページへのリンクを探してジャンプ // @license Creative Commons 2.1 (Attribution + Share Alike) -// @version 1.5 +// @version 1.6 // @author anekos (anekos@snca.net) // ==/VimperatorPlugin== // @@ -70,6 +70,7 @@ // TODO: // input / form // history +// id っぽいのを無視する (function () { @@ -107,6 +108,7 @@ force: false, useAutoPagerize: true, displayDelay: 500, + ignoreId: true }; //////////////////////////////////////////////////////////////// @@ -192,8 +194,21 @@ s.replace(new RegExp('^(.{0,'+(n-1)+'})$'), function (s) padChar(c+s, c, n)); + // id っぽい文字か考えてみる! + // 数字だけで長いのは ID っぽい! + // 年号っぽいのは無視しない方が良いかも。 + // 後方00 が含まれているパターンは、インクリメントしてもいい気がする + // 830000 => 830001 + function likeID (s) { + s = s.toString(); + return s.match(/^\d{6,}$/) && !s.match(/^(19[8-9]\d|20[0-2]\d)/) && !s.match(/00\d{2}$/); + } + + // (次|前)の数字文字列リストを取得 - function succNumber (n, next) { + function succNumber (n, next, ignoreId) { + if (ignoreId && likeID(n)) + return []; var m = (parseInt(n || 0, 10) + (next ? 1 : -1)).toString(); var result = [m]; if (m.length < n.length) @@ -213,7 +228,7 @@ // (次|前)のURIリストを取得 - function succURI (uri, next) { + function succURI (uri, next, ignoreId) { var urim = uri.match(/^(.+\/)([^\/]+)$/); if (!urim) return []; @@ -223,7 +238,7 @@ while (file && (dm = file.match(/\d+/))) { let [rcontext, lcontext, lmatch] = [RegExp.rightContext, RegExp.leftContext, RegExp.lastMatch]; left += lcontext; - succNumber(lmatch, next).forEach(function (succ) { + succNumber(lmatch, next, ignoreId).forEach(function (succ) { temp.push(dir + left + succ + rcontext); }); left += lmatch; @@ -421,7 +436,7 @@ // succ let succs = []; getAllLocations(window.content).forEach(function (uri) { - succs = succs.concat(succURI(uri, next)); + succs = succs.concat(succURI(uri, next, setting.ignoreId)); }); if (setting.useSuccPattern) { let link; |