diff --git a/lib/generators/article.js b/lib/generators/article.js index 4d2fb9b..67d1ee7 100644 --- a/lib/generators/article.js +++ b/lib/generators/article.js @@ -6,7 +6,9 @@ var findit = require('findit'), fs = require('fs'), docs = require('../docs'), weld = require('weld').weld, - helpers = require('../helpers'); + helpers = require('../helpers'), + koala = require('koala'), + uglify = require('uglify-js').parser.parse; var article = exports; @@ -92,7 +94,24 @@ article.weld = function(dom, articles) { // // TODO: the current code highlighting is slow, very slow. let's try to fix that // - dom.innerHTML = hl(dom.innerHTML, false, true); + Array.prototype.forEach.call( $('code', dom), function (c) { + var src = $(c).text(), + rendered; + + // test to see if uglify thinks the code snippet is javascript + // Makes too many false negatives, imo. + try { + uglify(src); + // "snippet.js" is recognized by koala as a js filename + rendered = koala.render('snippet.js', src); + } catch (e) { + //assume it's not javascript. Still have to handle entities though. + rendered = $("
").text(src).html(); + } + + $(c, dom).html(rendered); + }); + articles[i].content = dom.innerHTML; }); diff --git a/package.json b/package.json index 96d06bf..d409cdd 100644 --- a/package.json +++ b/package.json @@ -15,6 +15,8 @@ "http-server": "0.2.4", "jsdom": "0.2.x", "weld": "0.2.1", - "findit": "0.1.x" + "findit": "0.1.x", + "koala": "0.1.2", + "uglify-js": "1.1.0" } } diff --git a/theme/article.html b/theme/article.html index f8e31f1..9183afa 100644 --- a/theme/article.html +++ b/theme/article.html @@ -22,6 +22,15 @@ })(); + + +