Change Github time format.
// ==UserScript==
// @id github.com-ff599db1-47d8-b14f-83b4-3e345f6d67e3@http://efcl.info/
// @name Github-time-format-changer
// @version 1.1
// @namespace http://efcl.info/
// @author azu
// @license MIT
// @description Change Github time format.
// @include https://github.com/*
// @run-at document-end
// @grant none
// @require https://cdn.jsdelivr.net/momentjs/2.6.0/moment.min.js
// ==/UserScript==
var $ = unsafeWindow.$;
var toArray = Function.prototype.call.bind(Array.prototype.slice);
var relative = /ago/i;
function _update(body) {
var times = body.getElementsByTagName("time");
toArray(times).forEach(function (timeElement) {
if (!relative.test(timeElement.textContent)) {
timeElement.textContent = moment(timeElement.getAttribute("datetime")).fromNow();
}
});
}
function update(body) {
requestAnimationFrame(function () {
_update(body);
});
}
(function () {
// pjax
$(document).on('pjax:popstate pjax:end', function pjaxEnd() {
update(document.body);
});
// AutoPagerize
var addFilterHandler = function (evt) {
var node = evt.target;
update(node);
};
document.body.addEventListener('AutoPagerize_DOMNodeInserted', addFilterHandler, false);
// mutation chane update
var target = document.querySelector('body');
var config = {
childList: true,
subtree: true
};
var observer = new MutationObserver(function (mutations, self) {
mutations.some(function (mutation) {
if (mutation.type === 'childList' && mutation.target.nodeName === "TIME") {
update(document.body);
return true;
}
});
});
observer.observe(target, config);
})();
// MAIN =
update(document.body);