all repos — archive/homestead @ 9937c2a51ad9944da0239ebd7f777e5d6d8233d4

My future indieweb platform

fix: Add missing doctype via stream concat rheo appears to be stripping it out

Alan Pearce
commit

9937c2a51ad9944da0239ebd7f777e5d6d8233d4

parent

31f441ff32ab9f52fc80d0835bdd074554587ef6

1 file changed, 39 insertions(+), 27 deletions(-)

changed files
M src/responders.jssrc/responders.js
@@ -4,6 +4,7 @@ const h = require("highland");
const fs = require("fs"); const rheo = require("rheo"); const indent = require("indent-string"); +const PassThrough = require("stream").PassThrough; const toLines = string => string.split("\n").map((s, i, arr) => (i === arr.length - 1 ? s : s + "\n"));
@@ -25,6 +26,10 @@ const content = toLines(
indentForTemplate(getTemplate(template), indentLevel) ); return () => h(content); +} + +function prependDoctype(stream) { + return h(["<!DOCTYPE html>"]).concat(stream).pipe(new PassThrough()); } const templates = {
@@ -63,40 +68,47 @@ indentForTemplate,
home(ctx, config, postsStream) { ctx.type = "html"; - ctx.body = templates - .layout() - .pipe(rheo()) - .outer("main", showPage("home")) - .inner(".posts", function(postsTemplate) { - return postsStream.pipe(postsTemplate.map(renderPostListItem(ctx))); - }) - .pipe(setTitle(config.site.title)) - .render(); + + ctx.body = prependDoctype( + templates + .layout() + .pipe(rheo()) + .outer("main", showPage("home")) + .inner(".posts", function(postsTemplate) { + return postsStream.pipe(postsTemplate.map(renderPostListItem(ctx))); + }) + .pipe(setTitle(config.site.title)) + .render() + ); }, post(ctx, config, post) { ctx.type = "html"; - ctx.body = templates - .layout() - .pipe(rheo()) - .outer("main", showPage("post")) - .inner("article h1", rheo(post.data.get("title"))) - .outer("article main", rheo(post.body)) - .pipe(setTitle(config.site.title, post.data.get("title"))) - .render(); + ctx.body = prependDoctype( + templates + .layout() + .pipe(rheo()) + .outer("main", showPage("post")) + .inner("article h1", rheo(post.data.get("title"))) + .outer("article main", rheo(post.body)) + .pipe(setTitle(config.site.title, post.data.get("title"))) + .render() + ); }, taxon(ctx, config, taxonItems) { ctx.type = "html"; - ctx.body = templates - .layout() - .pipe(rheo()) - .outer("main", showPage("taxon")) - .inner("h1", rheo(config.site.title)) - .inner(".posts", function(postsTemplate) { - return taxonItems.pipe(postsTemplate.map(renderPostListItem(ctx))); - }) - .pipe(setTitle(config.site.title)) - .render(); + ctx.body = prependDoctype( + templates + .layout() + .pipe(rheo()) + .outer("main", showPage("taxon")) + .inner("h1", rheo(config.site.title)) + .inner(".posts", function(postsTemplate) { + return taxonItems.pipe(postsTemplate.map(renderPostListItem(ctx))); + }) + .pipe(setTitle(config.site.title)) + .render() + ); } };