diff options
-rw-r--r-- | src/index.js | 39 | ||||
-rw-r--r-- | src/templates/home.html | 7 | ||||
-rw-r--r-- | src/templates/index.html | 36 | ||||
-rw-r--r-- | src/templates/layout.html | 13 | ||||
-rw-r--r-- | src/templates/post.html | 11 | ||||
-rw-r--r-- | src/templates/taxon.html | 7 |
6 files changed, 66 insertions, 47 deletions
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 @@ +<main class="home"> + <ul class="posts"> + <li class="post"> + <a href="/">Test post please ignore</a> + </li> + </ul> +</main> 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 @@ -<!doctype html> -<html lang="en"> - <head> - <meta charset="utf-8"/> - <title></title> - </head> - <body> - <main class="homepage"> - <h1>hello world</h1> - - <ul class="posts"> - <li class="post"> - <a href="/">Test post please ignore</a> - </li> - </ul> - </main> - <main class="post"> - <article> - <h1>post title</h1> - <main> - 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. - </main> - </article> - </main> - <main class="taxon"> - <ul class="posts"> - <li class="post"> - <a href="/">Test post please ignore</a> - </li> - </ul> - </main> - </body> -</html> 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 @@ +<!doctype html> +<html lang="en"> + <head> + <meta charset="utf-8"/> + <title></title> + </head> + <body> + <header> + <h1>hello world</h1> + </header> + <main></main> + </body> +</html> 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 @@ +<main class="post"> + <article> + <h1>post title</h1> + <main> + 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. + </main> + </article> +</main> 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 @@ +<main class="taxon"> + <ul class="posts"> + <li class="post"> + <a href="/">Test post please ignore</a> + </li> + </ul> +</main> |