-
+
- + Test post please ignore + +
From 6b02186505264dc5a05a74bce1f9dcc3f91d08e1 Mon Sep 17 00:00:00 2001
From: Alan Pearce
Date: Sat, 24 Jun 2017 12:11:46 +0200
Subject: refactor: Separate templates into layout/body
---
src/index.js | 39 ++++++++++++++++++++++++++++-----------
src/templates/home.html | 7 +++++++
src/templates/index.html | 36 ------------------------------------
src/templates/layout.html | 13 +++++++++++++
src/templates/post.html | 11 +++++++++++
src/templates/taxon.html | 7 +++++++
6 files changed, 66 insertions(+), 47 deletions(-)
create mode 100644 src/templates/home.html
delete mode 100644 src/templates/index.html
create mode 100644 src/templates/layout.html
create mode 100644 src/templates/post.html
create mode 100644 src/templates/taxon.html
diff --git a/src/index.js b/src/index.js
index 93d61a4..a98a32d 100644
--- a/src/index.js
+++ b/src/index.js
@@ -20,12 +20,21 @@ const rheo = require('rheo')
const Posts = require('./modules/posts.js')
const posts = Posts.getFolder(config.posts.folder)
-const index = () => fs.createReadStream(`${__dirname}/templates/index.html`)
+const templateReader = template => () =>
+ fs.createReadStream(`${__dirname}/templates/${template}.html`)
+const templates = {
+ layout: templateReader('layout'),
+ home: templateReader('home'),
+ post: templateReader('post'),
+ taxon: templateReader('taxon')
+}
function setTitle (pageTitle) {
- return rheo.template(s =>
- s.inner('title', rheo((pageTitle ? ' · ' : '') + config.site.title))
- )
+ return rheo.template(function (s) {
+ return s
+ .inner('title', rheo((pageTitle ? ' · ' : '') + config.site.title))
+ .inner('body header h1', rheo(config.site.title))
+ })
}
function renderPostListItem (template, [, post]) {
@@ -38,13 +47,19 @@ function toArrayStream (iterator) {
return streamify(Array.from(iterator.entries()))
}
+function showPage (name) {
+ return function (els) {
+ return rheo(templates[name]())
+ }
+}
+
const postsStream = toArrayStream(posts)
router.get('home', '/', async function (ctx, next) {
ctx.set('Content-Type', 'text/html')
- ctx.body = index()
+ ctx.body = templates
+ .layout()
.pipe(rheo())
- .inner('body', pages => pages.find('main.homepage'))
- .inner('h1', rheo(config.site.title))
+ .outer('main', showPage('home'))
.inner('.posts', function (postsTemplate) {
return postsStream.pipe(postsTemplate.map(renderPostListItem))
})
@@ -58,9 +73,10 @@ router.get('post', '/post/:filename', async function (ctx, next) {
post.body = Posts.render(post)
ctx.set('Content-Type', 'text/html')
- ctx.body = index()
+ ctx.body = templates
+ .layout()
.pipe(rheo())
- .inner('body', pages => pages.find('main.post'))
+ .inner('main', showPage('post'))
.inner('article h1', rheo(post.data.get('title')))
.inner('article main', rheo(post.body))
.pipe(setTitle())
@@ -78,9 +94,10 @@ for (let [term, items] of taxonomies) {
)
ctx.set('Content-Type', 'text/html')
- ctx.body = index()
+ ctx.body = templates
+ .layout()
.pipe(rheo())
- .inner('body', pages => pages.find('main.taxon'))
+ .inner('main', showPage('taxon'))
.inner('h1', rheo(config.site.title))
.inner('.posts', function (postsTemplate) {
return toArrayStream(items.get(value)).pipe(
diff --git a/src/templates/home.html b/src/templates/home.html
new file mode 100644
index 0000000..dfc4677
--- /dev/null
+++ b/src/templates/home.html
@@ -0,0 +1,7 @@
+
+
+