summary refs log tree commit diff stats
path: root/src
diff options
context:
space:
mode:
authorAlan Pearce2017-06-18 17:42:21 +0200
committerAlan Pearce2017-06-18 17:42:21 +0200
commit33171a749162685e42650f82041cd2af0136718d (patch)
treebd6970a89c47db7ea13698ca378eae0df605af0d /src
parent1a36d4dc311a86246fe854da888af01f8195368e (diff)
downloadhomestead-33171a749162685e42650f82041cd2af0136718d.tar.lz
homestead-33171a749162685e42650f82041cd2af0136718d.tar.zst
homestead-33171a749162685e42650f82041cd2af0136718d.zip
feat(posts): render posts as markdown
Diffstat (limited to 'src')
-rw-r--r--src/index.js4
-rw-r--r--src/modules/posts.js15
-rw-r--r--src/views/post.html2
3 files changed, 18 insertions, 3 deletions
diff --git a/src/index.js b/src/index.js
index 07d7249..fce4c09 100644
--- a/src/index.js
+++ b/src/index.js
@@ -24,8 +24,10 @@ router.get('/', async function (ctx) {
 
 router.get('/post/:filename', async function (ctx) {
   ctx.assert(posts.has(ctx.params.filename), 404, 'Post not found')
+  const post = posts.get(ctx.params.filename)
+  post.body = Posts.render(post)
   await ctx.render('post', {
-    post: posts.get(ctx.params.filename)
+    post: post
   })
 })
 
diff --git a/src/modules/posts.js b/src/modules/posts.js
index 011292b..cba2372 100644
--- a/src/modules/posts.js
+++ b/src/modules/posts.js
@@ -3,12 +3,20 @@
 const fs = require('fs')
 const path = require('path')
 const matter = require('gray-matter')
+const Markdown = require('markdown-it')
 
 const grayMatterOptions = {
   lang: 'toml',
   delims: '+++'
 }
 
+const markdownOptions = {
+  html: true,
+  typographer: true
+}
+
+const markdown = new Markdown(markdownOptions)
+
 function* lowercaseKeys (iterator) {
   for (let [k, v] of iterator) {
     yield [String(k).toLowerCase(), v]
@@ -28,6 +36,10 @@ function getTitle (file) {
   return path.basename(file.path, path.extname(file.path))
 }
 
+function render (post) {
+  return markdown.render(post.content)
+}
+
 function get (filename) {
   const fileMatter = matter.read(filename, grayMatterOptions)
   fileMatter.basename = getTitle(fileMatter)
@@ -59,5 +71,6 @@ function toTags (posts) {
 module.exports = {
   get,
   getFolder,
-  toTags
+  toTags,
+  render
 }
diff --git a/src/views/post.html b/src/views/post.html
index fcc4dbd..81f7e3d 100644
--- a/src/views/post.html
+++ b/src/views/post.html
@@ -1,3 +1,3 @@
 {{ post.data.title }}
 
-{{ post.content }}
+{{ post.body | safe }}