aboutsummaryrefslogtreecommitdiffstats
path: root/pathtraq.js
blob: 7e9a3171f968f077cc1f2051cd7dc3959021c69a (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
92
93
94
95
96
97
98
99
100
101
/*
 * ==VimperatorPlugin==
 * @name            pathtraq.js
 * @description     optimize the indicator of Pathtraq add-on.
 * @description-ja  Pathtraq アドオンの表示をいい感じにする。
 * @author          janus_wel <janus_wel@fb3.so-net.ne.jp>
 * @version         0.10
 * @minversion      2.0pre
 * @maxversion      2.0pre
 * ==/VimperatorPlugin==
 *
 * LICENSE
 *  New BSD License
 *
 * USAGE
 *  this plugin change Pathtraq indicators to non-display,
 *  and display the icon of Pathtraq.
 *  you can use value 'p' in option 'pageinfo'.
 *  it will display ratings of current page.
 *
 *  refer: http://pathtraq.com/
 *
 * EXAMPLE
 *  default + Pathtraq
 *      :set pageinfo=gfmp
 *
 * */

( function () {

// add-on check
const doc = window.document;
if (!doc.getElementById('pathtraq-status')) {
    liberator.log('pathtraq.js is need Pathtraq add-on: http://pathtraq.com/install', 0);
    return;
}

// favicon
var icon = 'data:image/png;base64,'+
    'iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAMAAAAoLQ9TAAAAA3NCSVQICAjb4U/gAAAAPFBMVEUJ'+
    'tsHd8vQ3xMyT3+Pv7+9z1dsYu8W/6u3s9/dVzNTo6OjO7/GD2t9k0Nf39/dGyNAov8mh4ub///+i'+
    '4+eX1QPaAAAAFHRSTlP/////////////AP////////8A/xAuIvoAAAAJcEhZcwAAHCAAABwgAc0P'+
    'm54AAAAcdEVYdFNvZnR3YXJlAEFkb2JlIEZpcmV3b3JrcyBDUzOY1kYDAAAEEXRFWHRYTUw6Y29t'+
    'LmFkb2JlLnhtcAA8P3hwYWNrZXQgYmVnaW49IiAgICIgaWQ9Ilc1TTBNcENlaGlIenJlU3pOVGN6'+
    'a2M5ZCI/Pgo8eDp4bXBtZXRhIHhtbG5zOng9ImFkb2JlOm5zOm1ldGEvIiB4OnhtcHRrPSJBZG9i'+
    'ZSBYTVAgQ29yZSA0LjEtYzAzNCA0Ni4yNzI5NzYsIFNhdCBKYW4gMjcgMjAwNyAyMjoxMTo0MSAg'+
    'ICAgICAgIj4KICAgPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAy'+
    'LzIyLXJkZi1zeW50YXgtbnMjIj4KICAgICAgPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIK'+
    'ICAgICAgICAgICAgeG1sbnM6eGFwPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIj4KICAg'+
    'ICAgICAgPHhhcDpDcmVhdG9yVG9vbD5BZG9iZSBGaXJld29ya3MgQ1MzPC94YXA6Q3JlYXRvclRv'+
    'b2w+CiAgICAgICAgIDx4YXA6Q3JlYXRlRGF0ZT4yMDA4LTAxLTAyVDExOjEyOjE0WjwveGFwOkNy'+
    'ZWF0ZURhdGU+CiAgICAgICAgIDx4YXA6TW9kaWZ5RGF0ZT4yMDA4LTAxLTAyVDEzOjU0OjU0Wjwv'+
    'eGFwOk1vZGlmeURhdGU+CiAgICAgIDwvcmRmOkRlc2NyaXB0aW9uPgogICAgICA8cmRmOkRlc2Ny'+
    'aXB0aW9uIHJkZjphYm91dD0iIgogICAgICAgICAgICB4bWxuczpkYz0iaHR0cDovL3B1cmwub3Jn'+
    'L2RjL2VsZW1lbnRzLzEuMS8iPgogICAgICAgICA8ZGM6Zm9ybWF0PmltYWdlL3BuZzwvZGM6Zm9y'+
    'bWF0PgogICAgICA8L3JkZjpEZXNjcmlwdGlvbj4KICAgPC9yZGY6UkRGPgo8L3g6eG1wbWV0YT4K'+
    'ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg'+
    'ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAg'+
    'ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg'+
    'ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAg'+
    'ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg'+
    'ICAgICAgICDwMiY1AAAAfklEQVQYlV3PyxbDIAgE0DFBfMVpe/r//xqQ2EVno17lgOgeoUd8i3VO'+
    'U6EzyQMsCo8OWSBJcVXWDLU3BszIVi+2Ti44UL1aKt4BAFcvKv4AuqF4CT9oG3TYXEP9IgBoV4M1'+
    '6wGv0yfTL/sGG7YUsv+AXWR9LeBo0XaDPB+P3E6JCGjvBk1hAAAAAElFTkSuQmCC';

// display icon
let panel = doc.createElement('statusbarpanel');
let label = doc.getElementById('pathtraq-app-label');
panel.setAttribute('id', 'panel-pathtraq');
panel.setAttribute('class', 'statusbarpanel-iconic');
panel.setAttribute('src', icon);
label.parentNode.appendChild(panel);

// register pageinfo
let pageRating = doc.getElementById('pathtraq-status-rating-page');
let siteRating = doc.getElementById('pathtraq-status-rating-site');
liberator.modules.buffer.addPageInfoSection(
    'p',
    'Pathtraq Ratings',
    function (verbose) {
        if(verbose) {
            if (pageRating.value) yield ['Page rating', pageRating.value];
            if (siteRating.value) yield ['Site rating', siteRating.value];
        }
        return;
    }
);

// hide elements
[
    label,
    pageRating,
    siteRating,
    doc.getElementById('pathtraq-status-rating-sep'),
].forEach(function (n) {
    n.setAttribute('style', 'display: none !important;');
});

} )();

// vim: set sw=4 ts=4 et;
class="nx">to <TARGET>. When used with "!", copy result to clipboard. === Example === :kawase 30000 JPY THB == Global Variables == - g:umihara_default_source - g:umihara_default_target === Example === >|| let g:umihara_default_source="USD" let g:umihara_default_target="JPY" ||< ]]></detail> <detail lang="ja"><![CDATA[ == Usage == :kawase[!] <金額> [<ソース> [<ターゲット>]]: :kawase[!] <金額> <ソース1> <ソース2> ... <ターゲット>: ソースをターゲットに換算します "!" 指定でクリップボードにコピーされます === Example === >|| :kawase 30000 JPY THB ||< == Global Variables == 引数省略時のデフォルト値を設定します - g:umihara_default_source - g:umihara_default_target === Example === >|| let g:umihara_default_source="USD" let g:umihara_default_target="JPY" ||< ]]></detail> </VimperatorPlugin>; // }}} (function () { const defaultSource = liberator.globalVariables.umihara_default_source || 'USD'; const defaultTarget = liberator.globalVariables.umihara_default_target || 'JPY'; const re = /<td nowrap>(\d+:\d+)<\/td><td>([\d,]+\.[\d,]+)<\/td><td><b>([\d,]+\.[\d,]+)<\/b><\/td><\/tr><\/table><\/div>/; const ContryCodes = [ ['USD', '\u30a2\u30e1\u30ea\u30ab\u30c9\u30eb'], ['GBP', '\u30a4\u30ae\u30ea\u30b9 \u30dd\u30f3\u30c9'], ['INR', '\u30a4\u30f3\u30c9 \u30eb\u30d4\u30fc'], ['IDR', '\u30a4\u30f3\u30c9\u30cd\u30b7\u30a2 \u30eb\u30d4\u30a2'], ['ECS', '\u30a8\u30af\u30a2\u30c9\u30eb \u30b9\u30af\u30ec'], ['EGP', '\u30a8\u30b8\u30d7\u30c8 \u30dd\u30f3\u30c9'], ['AUD', '\u30aa\u30fc\u30b9\u30c8\u30e9\u30ea\u30a2 \u30c9\u30eb'], ['CAD', '\u30ab\u30ca\u30c0 \u30c9\u30eb'], ['KRW', '\u97d3\u56fd \u30a6\u30a9\u30f3'], ['KWD', '\u30af\u30a6\u30a7\u30fc\u30c8 \u30c7\u30a3\u30ca\u30fc\u30eb'], ['COP', '\u30b3\u30ed\u30f3\u30d3\u30a2 \u30da\u30bd'], ['SAR', '\u30b5\u30a6\u30b8 \u30ea\u30a2\u30eb'], ['SGD', '\u30b7\u30f3\u30ac\u30dd\u30fc\u30eb \u30c9\u30eb'], ['CHF', '\u30b9\u30a4\u30b9 \u30d5\u30e9\u30f3'], ['SEK', '\u30b9\u30a6\u30a7\u30fc\u30c7\u30f3 \u30af\u30ed\u30fc\u30ca'], ['THB', '\u30bf\u30a4 \u30d0\u30fc\u30c4'], ['TWD', '\u53f0\u6e7e \u30c9\u30eb'], ['CNY', '\u4e2d\u56fd \u5143'], ['CLP', '\u30c1\u30ea \u30da\u30bd'], ['DKK', '\u30c7\u30f3\u30de\u30fc\u30af \u30af\u30ed\u30fc\u30cd'], ['TRY', '\u30c8\u30eb\u30b3 \u30ea\u30e9'], ['JPY', '\u65e5\u672c \u5186'], ['NZD', '\u30cb\u30e5\u30fc\u30b8\u30fc\u30e9\u30f3\u30c9 \u30c9\u30eb'], ['NOK', '\u30ce\u30eb\u30a6\u30a7\u30fc \u30af\u30ed\u30fc\u30cd'], ['PYG', '\u30d1\u30e9\u30b0\u30a2\u30a4 \u30b0\u30a1\u30e9\u30cb'], ['PHP', '\u30d5\u30a3\u30ea\u30d4\u30f3 \u30da\u30bd'], ['BRL', '\u30d6\u30e9\u30b8\u30eb \u30ea\u30a2\u30eb'], ['VEF', '\u30d9\u30cd\u30ba\u30a8\u30e9 \u30dc\u30ea\u30d0\u30eb\u30fb\u30d5\u30a8\u30eb\u30c6'], ['PEN', '\u30da\u30eb\u30fc \u30bd\u30eb'], ['HKD', '\u9999\u6e2f \u30c9\u30eb'], ['MYR', '\u30de\u30ec\u30fc\u30b7\u30a2 \u30ea\u30f3\u30ae'], ['ZAR', '\u5357\u30a2\u30d5\u30ea\u30ab \u30e9\u30f3\u30c9'], ['MXN', '\u30e1\u30ad\u30b7\u30b3 \u30da\u30bd'], ['AED', 'UAE \u30c0\u30fc\u30cf\u30e0'], ['EUR', '\u6b27\u5dde \u30e6\u30fc\u30ed'], ['JOD', '\u30e8\u30eb\u30c0\u30f3 \u30c7\u30a3\u30ca\u30fc\u30eb'], ['RON', '\u30eb\u30fc\u30de\u30cb\u30a2 \u30ec\u30a6'], ['LBP', '\u30ec\u30d0\u30ce\u30f3 \u30dd\u30f3\u30c9'], ['RUB', '\u30ed\u30b7\u30a2\u30f3 \u30eb\u30fc\u30d6\u30eb'], ]; function echo (msg) { liberator.echo(<pre>{msg}</pre>); } let resultBuffer = ''; function kawase (value, clipboard, from, to) { [from, to] = [from || defaultSource, to || defaultTarget].map(function (it) it.toUpperCase()); if (from == '-') from = defaultSource; if (to == '-') to = defaultTarget; let url = 'http://quote.yahoo.co.jp/m5?a=' + value + '&s=' + from + '&t=' + to; var req = new XMLHttpRequest(); req.open('GET', url); req.onreadystatechange = function (aEvt) { if (req.readyState == 4 && req.status == 200) { let m = req.responseText.match(re); if (m) { let text = from + ' -> ' + to + '\n ' + from + ': ' + value + '\n ' + to + ': ' + m[3] + '\n rate: ' + m[2] + '\n time: ' + m[1]; echo(text); if (clipboard) { resultBuffer += text + '\n'; util.copyToClipboard(resultBuffer); } } else { liberator.echoerr('parse error'); } } }; req.send(null); } let extra = { argCount: '+', bang: true, completer: function (context, args) { if (args.length == 1) { // TODO - history } else { let def = args.length < 3 ? defaultSource : defaultTarget; context.title = ['Country Code', 'Country Name']; context.completions = [['-', def]].concat(ContryCodes); } } }; commands.addUserCommand( ['kawase'], 'Umihara Kawase Meow', function (args) { let as = args; resultBuffer = ''; liberator.echo('<<Results>>\n') if (as.length == 0) as.push('1'); while (as.length < 3) as.push('-'); for (let i = 1, l = as.length - 1; i < l; i++) { let [value, from, to] = [as[0], as[i], l == i ? '-' : as[l]]; liberator.log({ value: value, from: from, to: to }) value = eval(value); kawase(value, args.bang, from, to); } }, extra, true ); })(); // vim:sw=2 ts=2 et si fdm=marker: