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 (limited to 'src') 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 @@ +
+ +
diff --git a/src/templates/index.html b/src/templates/index.html deleted file mode 100644 index 412b4ec..0000000 --- a/src/templates/index.html +++ /dev/null @@ -1,36 +0,0 @@ - - - - - - - -
-

hello world

- - -
-
-
-

post title

-
- Fringilla ut morbi tincidunt augue interdum velit euismod! - Interdum velit laoreet id donec ultrices tincidunt arcu, non - sodales neque sodales ut etiam sit amet nisl purus, in - mollis nunc sed. -
-
-
-
- -
- - diff --git a/src/templates/layout.html b/src/templates/layout.html new file mode 100644 index 0000000..733bbc4 --- /dev/null +++ b/src/templates/layout.html @@ -0,0 +1,13 @@ + + + + + + + +
+

hello world

+
+
+ + diff --git a/src/templates/post.html b/src/templates/post.html new file mode 100644 index 0000000..b6eba4e --- /dev/null +++ b/src/templates/post.html @@ -0,0 +1,11 @@ +
+
+

post title

+
+ Fringilla ut morbi tincidunt augue interdum velit euismod! + Interdum velit laoreet id donec ultrices tincidunt arcu, non + sodales neque sodales ut etiam sit amet nisl purus, in + mollis nunc sed. +
+
+
diff --git a/src/templates/taxon.html b/src/templates/taxon.html new file mode 100644 index 0000000..44e1bdc --- /dev/null +++ b/src/templates/taxon.html @@ -0,0 +1,7 @@ +
+ +
-- cgit 1.4.1