// ==UserScript==
// @name GitHub Markdown
// @version 0.1
// @description Adds markdown representation for GitHub entities which can be copied into wikis. Example: [Git Commit: dc94bb4 - update README](https://github.com/org/repo/commit/dc94bb4)
// @author Evgeny Demchenko
// @match https://github.com/*/*/*
// @require https://code.jquery.com/jquery-3.1.1.min.js
// @website https://github.com/littlepea/userscripts
// ==/UserScript==
(function() {
'use strict';
var DEBUG = false;
function log(msg) {
if( DEBUG === false ) {
return;
}
console.log(msg);
}
function getContent(markdown) {
log(markdown);
var content = [
'
',
'Markdown: ',
'
',
'
copy',
'
'
];
return content.join('');
}
function parseURL(separator, length) {
var url = {};
var parts = window.location.href.split(separator);
var repoURL = parts[0];
var id = parts[1].split('/')[0].substring(0, length);
return {
'repoUrl': repoURL,
'id': id,
'url': [repoURL, id].join(separator)
};
}
function cleanTitle(title) {
return title.replace(/#\d+\s+/mg, '').replace(/[,]?\s+time:\d+/mg, '').trim();
}
function getPRTitle() {
var title = $('.js-issue-title').text();
return cleanTitle(title);
}
function getPullRequestMarkdown() {
var PR = parseURL('/pull/', 4);
log(PR);
return ['[Pull Request on GitHub: #', PR.id, ' - ', getPRTitle(),'](', PR.url, ')'].join('');
}
function getCommitTitle() {
var title = $('.commit-title').text();
return cleanTitle(title);
}
function getCommitMarkdown() {
var commit = parseURL('/commit/', 7);
log(commit);
return ['[Git Commit: ', commit.id, ' - ', getCommitTitle(),'](', commit.url, ')'].join('');
}
function selectMarkdownText() {
$('#markdown-text').select();
}
function copyMarkdown(e) {
e.stopPropagation();
selectMarkdownText();
try {
var successful = document.execCommand('copy');
var msg = successful ? 'successful' : 'unsuccessful';
log('Copying text command was ' + msg);
} catch (err) {
log('Oops, unable to copy');
}
return false;
}
function init() {
log('init();');
var content;
var url = window.location.href;
if( url.indexOf('/pull/') > 0 ) {
log('PR');
content = getContent(getPullRequestMarkdown());
$('.TableObject-item--primary').append(content);
} else if( url.indexOf('/commit/') > 0 ) {
log('Commit');
content = getContent(getCommitMarkdown());
$('#toc > .BtnGroup').after(content);
}
$('#markdown-text').focus(selectMarkdownText);
$('#markdown-copy').click(copyMarkdown);
}
init();
})();