GitHub: How many thumbs-up?
by
vzvu3k6k
2014-07-19 [2014/07/19 17:49:16]
Counts :+1: etc. in issue threads
-
/*
* @title GitHub: How many thumbs-up?
* @description Counts :+1: etc. in issue threads
* @version 1.0
* @include https://github.com/*
* @license CC0
*/
// Inspired by
// +1 badge · Issue #11 · azu/azu
// https://github.com/azu/azu/issues/11
(function(){
if(!/^\/[^\/]+?\/[^\/]+\/(?:issues|pulls)\/\d+\/?$/.test(location.pathname))
return;
var thumb = false;
var sum = Array.prototype.reduce.call(
document.querySelectorAll('.discussion-timeline .js-comment-container:not(:first-of-type) img[alt]'),
function(sum, node){
var change = 0;
switch(node.alt){
case ':+1:':
case ':thumbsup:':
change = 1;
break;
case ':-1:':
case ':thumbsdown:':
change = -1;
break;
}
if(change) thumb = true;
return sum + change;
}, 0);
sum += Array.prototype.reduce.call(
document.querySelectorAll('.discussion-timeline .js-comment-container:not(:first-of-type) .comment-body p'),
function(sum, node){
var change = 0;
node.textContent.replace(/[+-]1/, function(str){
thumb = true;
change += parseInt(str);
});
return sum + change;
}, 0);
if(thumb){
var firstComment = document.querySelector('.discussion-timeline .js-comment-container:first-of-type');
var label = document.createElement('span');
label.classList.add('timeline-comment-label');
label.textContent = (sum >= 0 ? '+' : '') + sum;
var header = firstComment.querySelector('.timeline-comment-header');
header.insertBefore(label, header.querySelector('.timeline-comment-label + *'));
}
})();
-
- Permalink
- このページへの個別リンクです。
- RAW
- 書かれたコードへの直接のリンクです。
- Packed
- 文字列が圧縮された書かれたコードへのリンクです。
- Userscript
- Greasemonkey 等で利用する場合の .user.js へのリンクです。
- Loader
- @require やソースコードが長い場合に多段ロードする Loader コミのコードへのリンクです。
- Metadata
- コード中にコメントで @xxx と書かれたメタデータの JSON です。