aboutsummaryrefslogtreecommitdiffstats
path: root/tombloo.js
blob: 085287df0227fb3cc90d87c229afc5dbb4ba26f4 (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
/**
 * ==VimperatorPlugin==
 * @name           tombloo.js
 * @description    Tombloo integrate plugin
 * @description-ja Tombloo経由で選択領域などをpostする
 * @author         Trapezoid
 * @version        0.1d
 * ==/VimperatorPlugin==
 *
 * Usage:
 *  :tombloo arg                    -> post by Tombloo (don't use prompt)
 *  :tombloo! arg                   -> post by Tombloo (use prompt)
 *  :tomblooAction arg              -> execute Tombloo's action in tool menu
 **/
var TomblooService = Components.classes['@brasil.to/tombloo-service;1'].getService().wrappedJSObject;
function update(target,src,keys){
    if(keys){
        keys.forEach(function(key){
            target[key] = src[key];
        });
    } else {
        for(let key in src)
            target[key] = src[key];
    }

    return target;
}

function getContext(){
    var doc = window.content.document;
    var win = window.content.wrappedJSObject;
    return update(update({
        document  : doc,
        window    : win,
        title     : ''+doc.title || '',
        selection : ''+win.getSelection(),
        target    : doc,
        //event     : event,
        //mouse     : mouse,
        //menu      : gContextMenu,
    },{}),win.location);
}

liberator.commands.addUserCommand(['tomblooAction'],'Execute Tombloo actions',
    function(arg){
        TomblooService.Tombloo.Service.actions[arg].execute();
    },{
        completer: function(filter){
            var completionList = new Array();
            for(let name in TomblooService.Tombloo.Service.actions)
                if(name.indexOf(filter) > -1)
                    completionList.push([name,name]);
            return [0,completionList];
        }
    }
);

liberator.commands.addUserCommand(['tombloo'],'Post by Tombloo',
    function(arg,special){
        TomblooService.Tombloo.Service.share(getContext(),TomblooService.Tombloo.Service.extractors[arg],special);
    },{
        bang: true,
        completer: function(filter){
            var completionList = new Array();
            var exts = TomblooService.Tombloo.Service.check(getContext());
            for(let i=0,l=exts.length; i < l; i++)
                if(exts[i].name.indexOf(filter) > -1)
                    completionList.push([exts[i].name,exts[i].name]);
            return [0,completionList];
        }
    }
);