aboutsummaryrefslogtreecommitdiffstats
path: root/hatena_fotolife.js
blob: cb0b1461c945f04a6bcf6de8d34af5da0c373fb6 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
/*
 * LICENSE
 *  The MIT License: http://www.opensource.org/licenses/mit-license.php
 *
 * Copyright (c) 2011, janus_wel<janus.wel.3@gmailcom>
 *
 * Permission is hereby granted, free of charge, to any person obtaining a copy
 * of this software and associated documentation files (the "Software"), to
 * deal in the Software without restriction, including without limitation the
 * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
 * sell copies of the Software, and to permit persons to whom the Software is
 * furnished to do so, subject to the following conditions:
 *
 * The above copyright notice and this permission notice shall be included in
 * all copies or substantial portions of the Software.
 *
 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
 * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
 * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
 * IN THE SOFTWARE.
 * */

let PLUGIN_INFO =
<VimperatorPlugin>
    <name>{NAME}</name>
    <description>Generates and yanks thumbnail tags in Hatena Fotolife</description>
    <description lang="ja">はてなフォトライフでサムネイル表示用の要素を生成する</description>
    <author mail="janus.wel.3@gmail.com" homepage="http://d.hatena.ne.jp/janus_wel">janus_wel</author>
    <license document="http://www.opensource.org/licenses/mit-license.php">New BSD License</license>
    <version>0.10</version>
    <minversion>2.3.1</minversion>
    <maxversion>2.3.1</maxversion>
    <detail><![CDATA[
== USAGE ==
';H' to generate and yank thumbnail tags

== SETTING ==
:hatena_fotolife_hint_key:
The key to generate and yank thumbnail tags(default: 'H').

== EXAMPLE ==
In .vimperatorrc

>||
hatena_fotolife_hint_key='f'
||<

]]></detail>
    <detail lang="ja"><![CDATA[
== USAGE ==
サムネイル表示のための要素群を生成ヤンクする ';H'

== SETTING ==
:hatena_fotolife_hint_key:
サムネイル表示のための要素群を生成ヤンクするキー(デフォルト: 'H')

== EXAMPLE ==
.vimperatorrc の中で

>||
image_extender_yank_key='f'
||<
]]></detail>
</VimperatorPlugin>;

( function () {

default xml namespace = "";
const hintkey = liberator.globalVariables.hatena_fotolife_hint_key || 'H';
const query = '//ul[contains(concat(" ", @class, " "), " fotolist ")]/li';

hints.addMode(
    hintkey,
    'Generate and yank thumbnail tags',
    function (element) {
        var li = element;
        var anchor = li.firstChild;
        var image = anchor.firstChild;
        var tags = <a href={anchor.href}>
                <img src={image.src} class="thumbnail" />
            </a>;

        util.copyToClipboard(tags.toXMLString(), true);
    },
    function () query
);

} )();
>"http://vimperator.org/namespaces/liberator"> <author email="anekos@snca.net">anekos</author> <license>New BSD License</license> <project name="Vimperator" minVersion="2.4"/> <p></p> <item> <tags>:foxageopen</tags> <spec>:foxageo<oa>pen</oa> <a>thread</a></spec> <description> <p> Open the selected <a>thread</a> </p> </description> </item> </plugin> <plugin name="FoxAge2ch" version="1.0.2" href="http://svn.coderepos.org/share/lang/javascript/vimperator-plugins/trunk/foxage2ch.js" summary="FoxAge2ch アドオン用" lang="ja" xmlns="http://vimperator.org/namespaces/liberator"> <author email="anekos@snca.net">anekos</author> <license>New BSD License</license> <project name="Vimperator" minVersion="2.4"/> <p></p> <item> <tags>:foxageopen</tags> <spec>:foxageo<oa>pen</oa> <a>thread</a></spec> <description> <p> 選択された <a>thread</a> を開く </p> <dl> <dt></dt><dd>新着アリ(?)</dd> <dt></dt><dd>生存中</dd> <dt></dt><dd>死亡</dd> </dl> </description> </item> </plugin> </>; // }}} (function () { Components.utils.import("resource://foxage2ch/utils.jsm"); let cmdPrefix = liberator.globalVariables.foxage2ch_command_prefix || 'foxage'; let svc = FoxAge2chUtils.service; const Status = { live: 0, new: 2, dead: 4 }; for (let [k, v] in Iterator(Status)) Status[v] = k; const StatusIcon = { 0: '\u2601', // 曇 2: '\u2600', // 晴 4: '\u2602', // 雨 } function selType1 (board) (board.type === 1); let threads = let (last, time = 0) ( function () { if (last) return last; last = util.Array.flatten([ svc.getChildItems(board.id, {}) for ([, board] in Iterator(svc.getChildItems("root", {}).filter(selType1))) ]); return last; } ); function addUserCommand (tab) { commands.addUserCommand( (tab ? ['t' + cmdPrefix + 'o[pen]', 'tab' + cmdPrefix + 'o[pen]'] : [cmdPrefix + 'o[pen]']), 'Open the borard from FoxAge2ch' + (tab ? ' in new tab' : 'in current tab'), function (args) { let thread = threads()[parseInt(args.literalArg.replace(/^.\s/, ''), 10) - 1]; if (!thread) return; FoxAge2chUtils.service.openItem(thread, !tab ^ !args.bang, false); }, { bang: true, literal: 0, options: [ [ ['-status', '-s'], commands.OPTION_STRING, null, [[v, StatusIcon[k]] for ([v, k] in Iterator(Status)) if (typeof v === 'string')] ] ].concat([ [['-' + k, '-' + k.slice(0, 1)], commands.OPTION_NOARG] for ([v, k] in Iterator(Status)) if (typeof v === 'number') ]), completer: function (context, args) { for (let [v, k] in Iterator(Status)) { if (typeof v === 'string' && ('-' + v in args)) args['-status'] = v; } context.completions = [ [ let (icon = StatusIcon[thread.status]) (icon ? icon + ' ' : '') + (idx + 1) + ': ' + thread.title, thread.id ] for ([idx, thread] in Iterator(threads())) if (!('-status' in args) || (thread.status === Status[args['-status']])) ]; } }, true ); } addUserCommand(true); addUserCommand(false); })(); // vim:sw=2 ts=2 et si fdm=marker: