From e132da91b5e8e723802c29089283bdf156f51cd9 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Jakub=20Sko=C5=99epa?= <jakub@skorepa.info>
Date: Thu, 25 Feb 2016 18:22:33 +0100
Subject: [PATCH] Allow lang selection for code highlighting

Metadata: lang="c"
You can only select lang for whole article for now
---
 sitegin/transformer-markdown.js | 15 +++++++++++----
 1 file changed, 11 insertions(+), 4 deletions(-)

diff --git a/sitegin/transformer-markdown.js b/sitegin/transformer-markdown.js
index 4dce021..9e146f4 100644
--- a/sitegin/transformer-markdown.js
+++ b/sitegin/transformer-markdown.js
@@ -1,6 +1,7 @@
 var marked = require('marked');
 var renderer = new marked.Renderer();
 var toURL = require('./transformer-urlizetags.js').toURL;
+var highlightjs = require('highlight.js');
 
 renderer.image = function(href, title, text) {
   if(process.argv[3] !== "final") {
@@ -38,9 +39,6 @@ marked.setOptions({
   sanitize: false,
   smartLists: true,
   smartypants: false,
-  highlight: function (code) {
-    return require('highlight.js').highlightAuto(code).value;
-  }
 });
 
 module.exports = function() {
@@ -48,7 +46,16 @@ module.exports = function() {
   tr.fancyname = "transformer markdown";
   tr.forEachPage = function(article, cb) {
     article.origContent = article.content;
-    article.content = marked(article.content);
+    article.content = marked(article.content, {
+      highlight: function (code) {
+        var h;
+        if(highlightjs.getLanguage(article.metadata.lang))
+          h = highlightjs.highlight(article.metadata.lang, code, true);
+        else
+          h = highlightjs.highlightAuto(code);
+        return h.value;
+      }
+    });
     cb();
   }
 }
-- 
GitLab