From fc664ac6977120fc05252475b7050a6c9444e397 Mon Sep 17 00:00:00 2001 From: Hannah Wolfe Date: Fri, 10 Apr 2020 13:08:41 +0100 Subject: [PATCH] Improved helper index, use glob to read directory - Having to remember to add files to an index.js is a PITA - We already have glob as a dependency, so use that - This requires that the file prev_next be renamed to prev_post, which is what it's called as by default - next_post is an alias of next_post - so this reflects that more closely --- core/frontend/helpers/index.js | 53 +++++-------------- .../helpers/{prev_next.js => prev_post.js} | 0 test/unit/helpers/next_post_spec.js | 3 ++ 3 files changed, 16 insertions(+), 40 deletions(-) rename core/frontend/helpers/{prev_next.js => prev_post.js} (100%) diff --git a/core/frontend/helpers/index.js b/core/frontend/helpers/index.js index a949aa6761..dad9a1e3bf 100644 --- a/core/frontend/helpers/index.js +++ b/core/frontend/helpers/index.js @@ -1,42 +1,15 @@ -const coreHelpers = {}; +const glob = require('glob'); +const path = require('path'); -coreHelpers.asset = require('./asset'); -coreHelpers.author = require('./author'); -coreHelpers.authors = require('./authors'); -coreHelpers.body_class = require('./body_class'); -coreHelpers.cancel_link = require('./cancel_link'); -coreHelpers.concat = require('./concat'); -coreHelpers.content = require('./content'); -coreHelpers.date = require('./date'); -coreHelpers.encode = require('./encode'); -coreHelpers.excerpt = require('./excerpt'); -coreHelpers.facebook_url = require('./facebook_url'); -coreHelpers.foreach = require('./foreach'); -coreHelpers.get = require('./get'); -coreHelpers.ghost_foot = require('./ghost_foot'); -coreHelpers.ghost_head = require('./ghost_head'); -coreHelpers.img_url = require('./img_url'); -coreHelpers.is = require('./is'); -coreHelpers.has = require('./has'); -coreHelpers.lang = require('./lang'); -coreHelpers.link = require('./link'); -coreHelpers.link_class = require('./link_class'); -coreHelpers.meta_description = require('./meta_description'); -coreHelpers.meta_title = require('./meta_title'); -coreHelpers.navigation = require('./navigation'); -coreHelpers.page_url = require('./page_url'); -coreHelpers.pagination = require('./pagination'); -coreHelpers.plural = require('./plural'); -coreHelpers.post_class = require('./post_class'); -coreHelpers.prev_post = require('./prev_next'); -coreHelpers.price = require('./price'); -coreHelpers.next_post = require('./prev_next'); -coreHelpers.raw = require('./raw'); -coreHelpers.reading_time = require('./reading_time'); -coreHelpers.t = require('./t'); -coreHelpers.tags = require('./tags'); -coreHelpers.title = require('./title'); -coreHelpers.twitter_url = require('./twitter_url'); -coreHelpers.url = require('./url'); +const helpers = {}; -module.exports = coreHelpers; +// We use glob here because it's already a dependency +// If we want to get rid of glob we could use E.g. requiredir +// Or require('fs').readdirSync(__dirname + '/') +let helperFiles = glob.sync('!(index).js', {cwd: __dirname}); +helperFiles.forEach((helper) => { + let name = helper.replace(/.js$/, ''); + helpers[name] = require(path.join(__dirname, helper)); +}); + +module.exports = helpers; diff --git a/core/frontend/helpers/prev_next.js b/core/frontend/helpers/prev_post.js similarity index 100% rename from core/frontend/helpers/prev_next.js rename to core/frontend/helpers/prev_post.js diff --git a/test/unit/helpers/next_post_spec.js b/test/unit/helpers/next_post_spec.js index 1e3775a631..3beb3f22af 100644 --- a/test/unit/helpers/next_post_spec.js +++ b/test/unit/helpers/next_post_spec.js @@ -7,6 +7,9 @@ var should = require('should'), api = require('../../../core/server/api'), common = require('../../../core/server/lib/common'); +// These helpers are the same, their name just changes +helpers.next_post = helpers.prev_post; + describe('{{next_post}} helper', function () { let locals; var browsePostsStub;