Bonsai

    @@ -34,8 +34,10 @@ target.parentNode.insertBefore(th, target); for (var link in data) { - var sel = 'a[href="' + link + '"]'; - var el = document.querySelector(sel).parentNode; + var el = document.querySelector('a[href="' + link + '"]'); + if (!el) + continue; + el = el.parentNode; var cell = document.createElement('TD'); cell.appendChild(data[link]); el.parentNode.insertBefore(cell, el.nextElementSibling);
  • /*
     * @title Bonsai
     * @description hg.mozilla.org の pushloghtml に変更されたファイルの一覧を表示します。
     * @include http://hg.mozilla.org/*
     * @license MIT License
     * @require 
     */
    (function() {
    function insertFileList(xml) {
      var entries = xml.querySelectorAll('entry');
      var data = {};
      for (var i = 0; i < entries.length; i++) {
        var entry = entries[i]; 
        var link = entry.querySelector('link').getAttributeNS(null, 'href');
        link = link.replace(/^http:\/\/hg\.mozilla\.org/, '');
        link = link.replace(/\/([0-9a-f]{12})[0-9a-f]+$/, '/$1');
        list = document.importNode(entry.querySelector('content > div > ul'), true);
    
        var items = list.children;
        for (var j = 0; j < items.length; j++) {
          var item = items[j];
          var a = document.createElement('A');
          a.setAttribute('href', link.replace('/rev/', '/diff/') + '/' + item.textContent);
          a.appendChild(item.firstChild);
          item.appendChild(a);
        }
    
        data[link] = list;
      }
    
      var target = document.querySelector('table tr:first-child > th:nth-child(3)');
      var th = document.createElement('TH');
      th.appendChild(document.createTextNode('Files'));
      target.parentNode.insertBefore(th, target);
    
      for (var link in data) {
        var el = document.querySelector('a[href="' + link + '"]');
        if (!el)
          continue;
        el = el.parentNode;
        var cell = document.createElement('TD');
        cell.appendChild(data[link]);
        el.parentNode.insertBefore(cell, el.nextElementSibling);
      }
    }
    
    var url = (window.location + '').replace('pushloghtml', 'pushlog');
    var req = new XMLHttpRequest();
    req.overrideMimeType('text/xml');
    req.open('GET', url, true);
    req.onreadystatechange = function(aEvent) {
      if (req.readyState == 4) {
        if (req.status == 200) {
          insertFileList(req.responseXML);
        }
      }
    };
    req.send(null);})();
  • Permalink
    このページへの個別リンクです。
    RAW
    書かれたコードへの直接のリンクです。
    Packed
    文字列が圧縮された書かれたコードへのリンクです。
    Userscript
    Greasemonkey 等で利用する場合の .user.js へのリンクです。
    Loader
    @require やソースコードが長い場合に多段ロードする Loader コミのコードへのリンクです。
    Metadata
    コード中にコメントで @xxx と書かれたメタデータの JSON です。

History

  1. 2010/08/28 22:53:48 - 2010-08-28
  2. 2010/08/28 22:52:46 - 2010-08-28
  3. 2010/08/28 22:51:23 - 2010-08-28
  4. 2010/08/20 15:22:40 - 2010-08-20
  5. 2010/08/18 11:40:39 - 2010-08-18
  6. 2010/08/18 11:09:56 - 2010-08-18
  7. 2010/08/18 10:45:26 - 2010-08-18