refactor: move markdown rendering to domain The input and output formats (md -> html) are specific to the domain of blogging, not really a presentation concern. This also means that markdown is rendered to HTML on startup, rather than per-request
Alan Pearce alan@alanpearce.eu
Sun, 25 Jun 2017 13:03:41 +0200
2 files changed, 4 insertions(+), 2 deletions(-)
M src/domain/posts.js → src/domain/posts.js
@@ -3,6 +3,7 @@ const fs = require('fs') const path = require('path') const matter = require('gray-matter') +const markdown = require('../modules/markdown.js') const grayMatterOptions = { lang: 'toml', @@ -31,6 +32,8 @@ function get (filename) { const fileMatter = matter.read(filename, grayMatterOptions) fileMatter.basename = getTitle(fileMatter) + delete fileMatter.orig + fileMatter.body = markdown(fileMatter.content) return canonicaliseMetadata(fileMatter) }
M src/responders.js → src/responders.js
@@ -2,7 +2,6 @@ 'use strict' const fs = require('fs') const rheo = require('rheo') -const markdown = require('./modules/markdown.js') const templateReader = template => () => fs.createReadStream(`${__dirname}/templates/${template}.html`) @@ -56,7 +55,7 @@ .layout() .pipe(rheo()) .inner('main', showPage('post')) .inner('article h1', rheo(post.data.get('title'))) - .inner('article main', rheo(markdown(post.content))) + .inner('article main', rheo(post.body)) .pipe(setTitle(config.site.title, post.data.get('title'))) .render() },