Skip to content

Instantly share code, notes, and snippets.

@joshje
Last active August 29, 2015 14:07
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 1 You must be signed in to fork a gist
  • Save joshje/f1a4cb69b068cbda4c31 to your computer and use it in GitHub Desktop.
Save joshje/f1a4cb69b068cbda4c31 to your computer and use it in GitHub Desktop.
Word counter for net magazine article submissions (1 line of code = 10 lines). Uses <pre> tags in the page to determine code blocks.
(function() {
var codeBlocks = document.getElementsByTagName('pre'),
codeLines = 0,
body = document.getElementsByTagName('body')[0],
text = function(el) {
if (el.innerText) return el.innerText;
return el.textContent;
};
var wordCount = text(body).split(' ').length;
for (var i = codeBlocks.length - 1; i >= 0; i--) {
var code = text(codeBlocks[i]);
if (code) {
codeLines += code.split('\n').length;
wordCount -= code.split(' ').length;;
}
}
var total = wordCount + codeLines * 10;
var list = [];
list.push(wordCount + ' words (not including code)');
list.push(codeLines + ' lines of code (counting for ' + codeLines * 10 + ' words)');
list.push(total + ' total');
var message = 'Article has:';
message += '<ul style="margin: 0;padding-left: 20px;"><li>';
message += list.join('</li><li>');
message += '</li></ul>';
var el = document.createElement('p');
el.style.color = '#000';
el.style.position = 'relative';
el.style['z-index'] = 1000000;
el.style.border = '1px solid #999';
el.style.padding = '10px';
el.style.margin = '10px';
el.style.background = '#FFF';
el.style['border-radius'] = '2px';
el.innerHTML = message;
body.insertBefore(el, body.firstChild);
})();
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment