Skip to content

Instantly share code, notes, and snippets.

@noibl
Created June 11, 2012 04:55
Show Gist options
  • Star 3 You must be signed in to star a gist
  • Fork 2 You must be signed in to fork a gist
  • Save noibl/2908570 to your computer and use it in GitHub Desktop.
Save noibl/2908570 to your computer and use it in GitHub Desktop.
Betteridge's Law for Hacker News
// ==UserScript==
// @name BetteridgeLinks
// @description Lowlight headlines on Hacker News that conform to Betteridge's Law
// @version 0.3
// @match http://news.ycombinator.com/*
// @author noibl <pjpee6w5pc@snkmail.com>
// ==/UserScript==
var questions = ['Is', 'Are', 'Does', 'Do', 'Has', 'Have', 'Did', 'Will', 'Can', 'Could', 'Should'];
var selector = '.title a';
var label = 'Probably not';
var className = 'hn-betteridge';
var cssRules = 'a.hn-betteridge:link { color: #828282; } '
+ 'a.hn-betteridge:after {'
+ 'color: #600; font-size: 50%; '
+ 'text-transform: uppercase; '
+ 'letter-spacing: 1px; '
+ 'background-color: #fff; '
+ 'content: " ' + label + '" '
+ '}';
var pages = [
'^/$',
'^/news$',
'^/newest$',
'^/x$'
];
init();
function init() {
var re;
for (var i = 0; i < pages.length; i++) {
re = new RegExp(pages[i]);
if (re.test(window.location.pathname)) {
run();
break;
}
}
}
function run() {
var head = document.getElementsByTagName('head')[0],
style = document.createElement('style'),
rules = document.createTextNode(cssRules);
style.type = 'text/css';
if (style.styleSheet) { style.styleSheet.cssText = rules.nodeValue; }
else { style.appendChild(rules); }
head.appendChild(style);
testLinks();
}
function testLinks() {
var links = document.querySelectorAll(selector);
for (var i = 0; i < links.length; i++) {
if (isBetteridge(links[i].innerHTML)) {
links[i].className += ' ' + className;
}
}
}
function isBetteridge(text) {
var re = new RegExp('^(' + questions.join('|') + ').*\\?$');
return re.test(text);
}
@iangreenleaf
Copy link

I really ❤️ this idea. I'm seriously considering forking this and trying to get it to apply to all news sites.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment