NicoDic Link Editor Names

By gifnksm Last update Jun 21, 2008 — Installed 341 times.
// ==UserScript==
// @name           NicoDic Link Editor Names
// @namespace      http://d.hatena.ne.jp/gifnksm/
// @include        http://dic.nicovideo.jp/revs/*
// ==/UserScript==
var table_exp = document.createExpression(
    'descendant-or-self::table[contains(concat(" ", @class, " "), " revisions ")]', null);
var idx_exp = document.createExpression(
    'count(./thead//th[contains(text(), "編集者")]/preceding-sibling::th)', null);

function addLinks(nodes) {
    nodes.forEach(function(node) {
        var table = table_exp.evaluate(node, XPathResult.FIRST_ORDERED_NODE_TYPE, null).singleNodeValue;
        if(table == null)
            return;
        var idx = idx_exp.evaluate(table, XPathResult.NUMBER_TYPE, null).numberValue + 1;
        var result = document.evaluate('./tbody/tr/td[' + idx + ']/text()[1][normalize-space(.) != ""]',
            table, null, XPathResult.ORDERED_NODE_SNAPSHOT_TYPE, null);
        
        if(result != null) {
            for(var i = 0, len = result.snapshotLength; i < len; i++)
            {
                var node = result.snapshotItem(i);
                var link = document.createElement('a');
                link.href = 'http://www.nicochart.jp/name/' + encodeURI(node.nodeValue);;
                node.parentNode.replaceChild(link, node);
                link.appendChild(node);
            }
        }
    });
}

addLinks([document]);

if(window.AutoPagerize)
    window.AutoPagerize.addFilter(addLinks);