From 9d601e206bdad2c384f2328a14fea8c0f5428ca9 Mon Sep 17 00:00:00 2001 From: Alan Pearce Date: Tue, 4 Jul 2017 21:03:24 +0200 Subject: feat: Add posts listing --- src/actions.js | 10 +++++- src/app.js | 2 ++ src/responders.js | 18 +++++------ src/templates/list.html | 6 ++++ src/templates/taxon.html | 6 ---- test/app.test.js | 31 ++++++++++++++++++ test/snapshots/app.test.js.md | 68 +++++++++++++++++++++++++++++++++++++++- test/snapshots/app.test.js.snap | Bin 1550 -> 1658 bytes 8 files changed, 124 insertions(+), 17 deletions(-) create mode 100644 src/templates/list.html delete mode 100644 src/templates/taxon.html diff --git a/src/actions.js b/src/actions.js index 7c7482f..e6d7f98 100644 --- a/src/actions.js +++ b/src/actions.js @@ -12,6 +12,13 @@ function home(config, posts) { }; } +function posts(config, posts) { + const postsArray = Array.from(posts.values()); + return async function(ctx, next) { + responders.list(ctx, config, null, "Posts", postsArray); + }; +} + function highlightTheme(config) { const theme = config.posts.code.theme; const themeFile = path.resolve( @@ -47,7 +54,7 @@ function taxonGenerator(config, term, items) { const taxonItems = items.get(value); - responders.taxon(ctx, config, term, value, taxonItems); + responders.list(ctx, config, term, value, taxonItems); }; } @@ -62,6 +69,7 @@ async function serveFiles(ctx) { module.exports = { home, + posts, highlightTheme, post, taxonGenerator, diff --git a/src/app.js b/src/app.js index 6be44bd..b6d8beb 100644 --- a/src/app.js +++ b/src/app.js @@ -21,6 +21,8 @@ module.exports = async function() { router.get("home", "/", actions.home(config, Posts.posts)); + router.get("posts", "/post", actions.posts(config, Posts.posts)); + router.get( "highlight-theme", "/css/code.css", diff --git a/src/responders.js b/src/responders.js index 48d1949..75850f8 100644 --- a/src/responders.js +++ b/src/responders.js @@ -37,7 +37,7 @@ const templates = { layout: templateReader("layout"), home: templateReader("home", baseIndentLevel), post: templateReader("post", baseIndentLevel), - taxon: templateReader("taxon", baseIndentLevel) + list: templateReader("list", baseIndentLevel) }; function title(siteTitle, pageTitle) { @@ -97,25 +97,25 @@ module.exports = { ); }, - post(ctx, config, post) { + list(ctx, config, listType, listName, posts) { ctx.type = "html"; ctx.body = layout( config, - post.data.get("title"), - hyperfast(templates.post, renderPost(ctx)(post)) + Case.title(listName), + hyperfast(templates.list, { + ".h-entry": posts.map(renderPost(ctx)) + }) ); }, - taxon(ctx, config, term, value, taxonItems) { + post(ctx, config, post) { ctx.type = "html"; ctx.body = layout( config, - Case.title(value), - hyperfast(templates.taxon, { - ".h-entry": taxonItems.map(renderPost(ctx)) - }) + post.data.get("title"), + hyperfast(templates.post, renderPost(ctx)(post)) ); } }; diff --git a/src/templates/list.html b/src/templates/list.html new file mode 100644 index 0000000..44244e5 --- /dev/null +++ b/src/templates/list.html @@ -0,0 +1,6 @@ +