June 13, 2010

JavaScript snippets (trim, supplant)

17 Hours of JavaScript from the Masters で紹介されてるビデオの The JavaScript Programming Language の Part 3 にでてきたコードをメモ。

12:40 あたりに出てくる trim

String.prototype.trim = function() {
    return this.replace(
        /^\s*(\S*(\s+\S+)*)\s*$/, "$1");
};

ちなみに SnipplrJavaScript trim で検索するといくつかヒットするけど、それぞれ微妙にやり方が違ってて面白い。

その後、13:00 あたりから出てくる supplant

String.prototype.supplant = function(o) {
    return this.replace(/{([^{}]*)}/g,
        function (a, b) {
            var r = o[b];
            return typeof r === 'string' ? r : a;
        }
    );
};

それの使い方(ビデオでは使い方が先に出てくる)。

var template = '<table border="{border}">' +
    '<tr><th>Last</th><td>{last}</td></tr>' +
    '<tr><th>First</th><td>{first}</td></tr>' +
    '</table>';

var data = {
    first: "Carl",
    last: "Hollywood",
    border: 2
};

mydiv.innerHTML = template.supplant(data);

同じようなものに RND template があって、これを参考に(ほとんどコピペして)JavaScriptで最低限のテンプレートシステムを書いたりしたけど、やっぱり書き方が微妙に違う。