motemen (owner)

Revisions

gist: 213432 Download_button fork
public
Public Clone URL: git://gist.github.com/213432.git
Embed All Files: show embed
favotterize-favstar.bookmarklet.js #
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
var STYLES = [
    { favs: 5, style: 'color: red; font-size: 140%; font-weight: bold' },
    { favs: 3, style: 'color: purple; font-size: 120%; font-weight: bold' },
    { favs: 2, style: 'color: green; font-size: 110%; font-weight: bold' }
];
 
var tweets = $X('//div[@class="tweetContainer"]', Array);
for (var i = 0; i < tweets.length; i++) {
    var elem = $X('./div/div/div[@class="theTweet"]', tweets[i], Array)[0];
    var favs = $X('./div/div[contains(@class,"favouritesCount")]', tweets[i], Number);
    for (var j = 0; j < STYLES.length; j++) {
        if (favs >= STYLES[j].favs) {
            elem.setAttribute('style', STYLES[j].style);
            break;
        }
    }
}
 
// http://gist.github.com/3238.txt
// extend version of $X
// $X(exp);
// $X(exp, context);
// $X(exp, type);
// $X(exp, context, type);
function $X (exp, context, type /* want type */) {
    if (typeof context == "function") {
        type = context;
        context = null;
    }
    if (!context) context = document;
    exp = (context.ownerDocument || context).createExpression(exp, function (prefix) {
        var o = document.createNSResolver(context)(prefix);
        if (o) return o;
        return (document.contentType == "application/xhtml+xml") ? "http://www.w3.org/1999/xhtml" : "";
    });
 
    switch (type) {
        case String: return exp.evaluate(context, XPathResult.STRING_TYPE, null).stringValue;
        case Number: return exp.evaluate(context, XPathResult.NUMBER_TYPE, null).numberValue;
        case Boolean: return exp.evaluate(context, XPathResult.BOOLEAN_TYPE, null).booleanValue;
        case Array:
            var result = exp.evaluate(context, XPathResult.ORDERED_NODE_SNAPSHOT_TYPE, null);
            for (var ret = [], i = 0, len = result.snapshotLength; i < len; i++) {
                ret.push(result.snapshotItem(i));
            }
            return ret;
        case undefined:
            var result = exp.evaluate(context, XPathResult.ANY_TYPE, null);
            switch (result.resultType) {
                case XPathResult.STRING_TYPE : return result.stringValue;
                case XPathResult.NUMBER_TYPE : return result.numberValue;
                case XPathResult.BOOLEAN_TYPE: return result.booleanValue;
                case XPathResult.UNORDERED_NODE_ITERATOR_TYPE:
                    // not ensure the order.
                    var ret = [], i = null;
                    while ((i = result.iterateNext())) ret.push(i);
                    return ret;
            }
            return null;
        default: throw(TypeError("$X: specified type is not valid type."));
    }
}