UNPKG

@budibase/handlebars-helpers

Version:

More than 130 Handlebars helpers in ~20 categories. Helpers can be used with Assemble, Generate, Verb, Ghost, gulp-handlebars, grunt-handlebars, consolidate, or any node.js/Handlebars project.

71 lines (63 loc) 1.57 kB
'use strict'; var fs = require('fs'); var path = require('path'); var util = require('./utils/handlebarsUtils'); var number = require('./number'); var helpers = module.exports; const kindOf = require('kind-of'); const isGlob = require('is-glob'); const micromatch = require('micromatch'); /** * Helper `fileSize` is deprecated. Use `helper.prettyBytes` instead. */ helpers.fileSize = number.bytes; /** * Read a file from the file system. This is useful in composing * 'include'-style helpers using sub-expressions. * * ```handlebars * {{read 'a/b/c.js'}} * {{someHelper (read 'a/b/c.md')}} * ``` * @param {String} `filepath` * @return {String} * @api public */ helpers.read = function(filepath, options) { return fs.readFileSync(filepath, 'utf8'); }; /** * Return an array of files from the given * directory. * * @param {String} `directory` * @return {Array} * @api public */ helpers.readdir = function(dir, filter) { var files = fs.readdirSync(dir); files = files.map(function(fp) { return path.join(dir, fp); }); if (util.isOptions(filter)) { return files; } if (typeof filter === 'function') { return filter(files); } if (kindOf(filter) === 'regexp') { return files.filter(function(fp) { return filter.test(fp); }); } if (isGlob(filter)) { return files.filter(micromatch.matcher(filter)); } if (['isFile', 'isDirectory'].indexOf(filter) !== -1) { return files.filter(function(fp) { var stat = fs.statSync(fp); return stat[filter](); }); } return files; };