aboutsummaryrefslogtreecommitdiffstats
path: root/hidecritter.js
blob: 8d64819447a9917e607e7ba300760bc1f6525c94 (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
/*
 * ==VimperatorPlugin==
 * @name            hidecritter.js
 * @description     hide specified elements.
 * @description-ja  指定した要素を隠す。
 * @author          janus_wel <janus_wel@fb3.so-net.ne.jp>
 * @version         0.11
 * @minversion      2.0pre 2008/10/16
 * ==/VimperatorPlugin==
 *
 * LICENSE
 *   New BSD License
 *
 * USAGE
 *   hit ';h'
 *
 * TODO
 *  use wedata.net... ?
 * */

( function () {
const localSITEINFO = [
    {
        name:   'はてなダイアリー',
        url:    'http://d.hatena.ne.jp/',
        xpath:  '( id("simple-header") | //div[contains(concat(" ", @class, " "), " header ")] | //div[contains(concat(" ", @class, " "), " sidebar ")])',
    }
];

const defaultSITEINFO = {
    name:   'default',
    url:    '.*',
    xpath:  '( //*[contains(@id, "header")] | //*[contains(@id, "footer")] | //*[contains(@id, "sidebar")] | //*[contains(@class, "header")] | //*[contains(@class, "footer")] | //*[contains(@class, "sidebar")] )',
};

hints.addMode(
    liberator.globalVariables.hidecritter_mapping || 'h',
    'hide look like header, footer, sidebar and so on',
    function (element) {
        element.style.display = 'none';
    },
    function () {
        let siteinfo;
        for (let [, s] in Iterator(localSITEINFO)) {
            if (buffer.URL.match(s.url)) {
                siteinfo = s;
                break;
            }
        }
        if (!siteinfo) siteinfo = defaultSITEINFO;

        return siteinfo.xpath;
    }
);
} )();

// vim: set sw=4 ts=4 et;