// ==UserScript== // @name Github Pull Request From Link // @namespace https://github.com/jerone/UserScripts/ // @description Make pull request original branch linkable // @author jerone // @copyright 2014+, jerone (http://jeroenvanwarmerdam.nl) // @license GNU GPLv3 // @homepage https://github.com/jerone/UserScripts/tree/master/Github_Pull_Request_From // @homepageURL https://github.com/jerone/UserScripts/tree/master/Github_Pull_Request_From // @version 11 // @grant none // @include https://github.com/*/* // @downloadURL none // ==/UserScript== /* global unsafeWindow */ (function(unsafeWindow) { String.format = function(string) { var args = Array.prototype.slice.call(arguments, 1, arguments.length); return string.replace(/{(\d+)}/g, function(match, number) { return typeof args[number] !== "undefined" ? args[number] : match; }); }; // init; function init() { var repo = document.querySelector(".js-current-repository").textContent; Array.prototype.forEach.call(document.querySelectorAll("span.commit-ref.current-branch"), function(treeSpan) { var tree = treeSpan.textContent.trim().split(":"); var treeLink = document.createElement("a"); treeLink.setAttribute("href", String.format("https://github.com/{0}/{1}/tree/{2}", tree.shift(), // user; repo, // repository; tree.join(":"))); // branch; treeLink.innerHTML = treeSpan.innerHTML; treeSpan.innerHTML = ""; treeSpan.appendChild(treeLink); }); } init(); // on pjax; unsafeWindow.$(document).on("pjax:end", init); // `pjax:end` also runs on history back; })(typeof unsafeWindow !== "undefined" ? unsafeWindow : window);