about summary refs log tree commit diff stats
path: root/src/actions.js
diff options
context:
space:
mode:
Diffstat (limited to 'src/actions.js')
-rw-r--r--src/actions.js22
1 files changed, 22 insertions, 0 deletions
diff --git a/src/actions.js b/src/actions.js
index 8a04671..7c7482f 100644
--- a/src/actions.js
+++ b/src/actions.js
@@ -1,5 +1,7 @@
 "use strict";
 
+const fs = require("fs");
+const path = require("path");
 const send = require("koa-send");
 const responders = require("./responders");
 
@@ -10,6 +12,25 @@ function home(config, posts) {
   };
 }
 
+function highlightTheme(config) {
+  const theme = config.posts.code.theme;
+  const themeFile = path.resolve(
+    __dirname,
+    `../node_modules/highlight.js/styles/${theme}.css`
+  );
+
+  if (!fs.existsSync(themeFile)) {
+    throw new Error(`Couldn't find highlight theme ${theme}`);
+  }
+
+  const css = fs.readFileSync(themeFile, "utf-8");
+
+  return async function(ctx, next) {
+    ctx.type = "css";
+    ctx.body = css;
+  };
+}
+
 function post(config, posts) {
   return async function(ctx, next) {
     ctx.assert(posts.has(ctx.params.filename), 404, "Post not found");
@@ -41,6 +62,7 @@ async function serveFiles(ctx) {
 
 module.exports = {
   home,
+  highlightTheme,
   post,
   taxonGenerator,
   serveFiles