aboutsummaryrefslogtreecommitdiffstats
path: root/multi_requester.js
AgeCommit message (Expand)Author
2009-01-18* 変なもんがくっついてた![28624]suVene
2009-01-18* complete の補完順を選択できるように変更(default date desc)suVene
2009-01-18インデント下げました.suVene
2009-01-06* XPath の結果判定 miss.suVene
2008-12-28複数 %s に対応。suVene
2008-12-26wedata local cache.suVene
2008-12-26wedata local cache.suVene
2008-12-25デフォルトのサイト設定を追加anekos
2008-12-22licensesuVene
2008-12-20add <updateURL> for pluginManager.js [27131]suVene
2008-12-19* get absolute path of <a>, <img>.suVene
2008-12-17 * Libraries.drry
2008-12-17* follow PluginManager(pre)suVene
2008-12-17:%s/&lt;/</ganekos
2008-12-13 * fixed the CSS.drry
2008-12-09* _libly.js ver.0.1.4にあわせた修正 [26222]suVene
2008-12-09 * [26161].drry
2008-12-08*PLUGIN_INFO対応(@see http://coderepos.org/share/browser/lang/javascript/vi...suVene
2008-12-07*libty.js bug fix.suVene
2008-12-06library is moved to a libly.jssuVene
2008-12-02 * 正規表現を修正しました。仕様では「`--`」禁止ですが...drry
2008-12-02*SITEINFOと共にkeymap指定suVene
2008-12-01 * fixed a regex.drry
2008-12-011度目のレスポンスから次のリクエストを取り出す仕組みsuVene
2008-11-30*複数リクエスト時のechoが2.0preでうまく出力できないので...suVene
2008-11-30XPathのcontextNodeとして利用するにはDocumentFragment.firstChildをr...suVene
2008-11-29bugfix: fail parsing DOM when DOCTYPE is not setjanus_wel
2008-11-28*引数のサイトをカンマ区切りで同時に指定できるように...suVene
2008-11-26url に %s がない場合は引数なしで実行可能にsuVene
2008-11-26Follow CVS Headanekos
2008-11-23follow the new completer.anekos
2008-11-19for 2.0preanekos
2008-11-19modify siteinfo attribute 'resultXPath' to 'xpath'suVene
2008-11-192.0pre 対応anekos
PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ################################################################################### # http://sourceforge.jp/projects/opensource/wiki/licenses%2Fnew_BSD_license # # に参考になる日本語訳がありますが、有効なのは上記英文となります。 # ################################################################################### }}} */ // INFO {{{ let INFO = <> <plugin name="ePub Reader" version="1.1.0" href="http://vimpr.github.com/" summary="for ePub Reader addon" lang="en-US" xmlns="http://vimperator.org/namespaces/liberator"> <author email="anekos@snca.net">anekos</author> <license>New BSD License</license> <project name="Vimperator" minVersion="3.0"/> <item> <tags>:epubreader</tags> <spec>:epubreader <a>action</a> <oa>number</oa></spec>. <description><p>Do <a>action</a>.</p></description> </item> <p> Action list: <dl> <dt>next</dt><dd>Go next page</dd> <dt>prev</dt><dd>Go previous page</dd> <dt>nextchapter</dt><dd>Go next chapter</dd> <dt>prevchapter</dt><dd>Go previous chapter</dd> <dt>bookmark</dt><dd>Bookmark in ePub Reader addon</dd> <dt>library</dt><dd>Open ePub Reader library</dd> <dt>jump</dt><dd>Jump to the page</dd> </dl> </p> <p> Each actions can do mapping. e.g. <code> let g:epub_reader_map_&gt;action&lt; = 'l >'; </code> </p> </plugin> <plugin name="ePub Reader" version="1.1.0" href="http://vimpr.github.com/" summary="for ePub Reader addon" lang="ja" xmlns="http://vimperator.org/namespaces/liberator"> <author email="anekos@snca.net">anekos</author> <license>New BSD License</license> <project name="Vimperator" minVersion="3.0"/> <item> <tags>:epubreader</tags> <spec>:epubreader <a>action</a> <oa>number</oa></spec>. <description><p><a>action</a>を実行する。</p></description> </item> <p> Action のリスト: <dl> <dt>next</dt><dd>Go next page</dd> <dt>prev</dt><dd>Go previous page</dd> <dt>nextchapter</dt><dd>Go next chapter</dd> <dt>prevchapter</dt><dd>Go previous chapter</dd> <dt>bookmark</dt><dd>Bookmark in ePub Reader addon</dd> <dt>library</dt><dd>Open ePub Reader library</dd> <dt>jump</dt><dd>Jump to the page</dd> </dl> </p> <p> 各アクションは <code> let g:epub_reader_map_&gt;action&lt; = 'l >'; </code> のようにしてマッピングできます 一つのアクションに複数のマッピングをしたいときはスペースで区切ります </p> </plugin> </>; // }}} (function () { const MapKeys = { prev: 'goPreviousPage', next: 'goNextPage', prevchapter: 'goPreviousChapter', nextchapter: 'goNextChapter', save: 'save', bookmark: 'bookmark', library: 'openLibrary', jump: 'jump' }; const ReaderUrls = /^chrome:\/\/epubreader\/content\/reader.xul/; function press (query) content.document.querySelector(query).click(); function pressN (query, n) { for (let i = 0; i < (n || 1); i++) press(query); } function makePress (query) function () press(query); function makePressN (query) function (count) pressN(query, count); function withCompleter (main, completer) { main.completer = completer; return main; } function getIndexLinks () let (frame = content.document.querySelector('#nav_frame').contentDocument) Array.slice(frame.querySelectorAll('.navPoint .childLevel > a')); let api = __context__.API = { bookmark: makePress('toolbarbutton#save'), goPreviousPage: makePressN('toolbarbutton#nav_page_backwards_button'), goNextPage: makePressN('toolbarbutton#nav_page_forwards_button'), goPreviousChapter: makePressN('toolbarbutton#nav_backwards_button'), goNextChapter: makePressN('toolbarbutton#nav_forwards_button'), openLibrary: makePress('toolbarbutton#library'), save: makePress('toolbarbutton#bookmark'), jump: withCompleter( function (index) { buffer.followLink(getIndexLinks()[index]); }, function (context, args) { context.compare = void 0; context.completions = [ [i + ': ' + link.textContent, link.href.replace(/.*\//g, '').replace(/\.[^.]+$/, '')] for ([i, link] in Iterator(getIndexLinks())) ]; } ) }; for (let keyValue in Iterator(MapKeys)) { let [key, value] = keyValue; let gvname = 'epub_reader_map_' + key; let map = liberator.globalVariables[gvname]; if (!map) continue; let func = api[value]; mappings.addUserMap( [modes.NORMAL], map.split(/\s+/), 'for ePub Reader', function (count) func(count), { count: !!func.length, matchingUrls: ReaderUrls } ); } commands.addUserCommand( ['epubreader'], 'ePub Reader addon controler', function (args) { if (!ReaderUrls(buffer.URL)) return liberator.echoerr('Not in ePub Reader'); let [cmd, num] = args; let func = api[MapKeys[cmd]]; if (!func) return liberator.echoerr('Unknown command: ' + cmd); func(parseInt(num, 10)); }, { literal: 1, completer: function (context, args) { if (args.length > 1) { let [cmd] = args; let func = api[MapKeys[cmd]]; if (!func.completer) return; return func.completer(context, args); } context.completions = [keyValue for (keyValue in Iterator(MapKeys))]; } }, true ); })(); // vim:sw=2 ts=2 et si fdm=marker: