GitHub - show images in repo as icons

Show images in Github repositories as 16x16 icons

目前為 2014-10-24 提交的版本,檢視 最新版本

// ==UserScript==
// @name        GitHub - show images in repo as icons
// @description Show images in Github repositories as 16x16 icons
// @namespace   wOxxOm.scripts
// @include     https://github.com/*
// @match       https://github.com/*
// @version     1
// @grant       none
// @run-at      document-start
// ==/UserScript==

function iconify(n) {
  var aa = (n.className == 'js-directory-link') ? [n] : n.getElementsByClassName('js-directory-link');
  for (var a, i=0; i<aa.length && (a=aa[i++]); ) {
    var r = a.href.match(/github\.com\/(.+?\/)blob\/([^\/]+\/.+?\.(?:png|jpg|jpeg|bmp|gif|cur|ico))$/);
    if (!r)
      continue;

    var td = a.parentNode.parentNode;
    if (td.localName != 'td')
      continue;
    td = td.previousElementSibling;

    var icon = td.firstElementChild;
    var img = document.createElement('img');
    td.insertBefore(img, icon);
    td.removeChild(icon);

    img.style.width = img.style.height = '16px';
    img.src = 'https://raw.githubusercontent.com/' + r[1] + r[2];
  }
}

if (document.body)
  iconify(document.body);

var ob = new MutationObserver(function(mutations){
  for (var m, i=0; i<mutations.length && (m=mutations[i++]); )
    if (m.target.id == 'js-repo-pjax-container' || (m.target.className == 'files' && m.target.localName == 'table'))
      for (var nn=m.addedNodes, n, j=0; j<nn.length && (n=nn[j++]); )
        if (n.nodeType == Node.ELEMENT_NODE)
            iconify(n);
});
ob.observe(document, {subtree:true, childList:true});