/ / メモ
2009-10-06

google-code-prettify で10文字ごとに色分けするハンドラー

function createMyDecorator(){
    /**
      * 10文字ごとにトークンわけする。
      */
    function tokenizer(source){
        var tokens = [];
        for(i=0;i < source.length;i += 10){
            tokens.push(source.substr(i,10));
         }
        return tokens;
    }

    var decorate = function(job){
        var sourceCode = job.source, basePos = job.basePos;
        var decorations = [basePos, PR.PR_PLAIN];
        var tokens = tokenizer(sourceCode);
        var pos = 0;
        for (var ti = 0, nTokens = tokens.length; ti < nTokens; ++ti){
            var token = tokens[ti];
            var tokenStart = pos;
            pos += token.length;
            style = ti % 2 ? PR.PR_STRING : PR.PR_PLAIN; //交互に色分け
            decorations.push(basePos + tokenStart, style);
        }
        job.decorations = decorations;
    };
    return decorate;
};

PR.registerLangHandler(createMyDecorator(), ['d']);

トラックバック http://mikanya.dip.jp/memo/2009-10-06-1