UNPKG

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.

69 lines (61 loc) 1.49 kB
'use strict'; var fs = require('fs'); var path = require('path'); var util = require('handlebars-utils'); var utils = require('./utils'); var number = require('./number'); var helpers = module.exports; /** * 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 (utils.typeOf(filter) === 'regexp') { return files.filter(function(fp) { return filter.test(fp); }); } if (utils.isGlob(filter)) { return files.filter(utils.mm.matcher(filter)); } if (['isFile', 'isDirectory'].indexOf(filter) !== -1) { return files.filter(function(fp) { var stat = fs.statSync(fp); return stat[filter](); }); } return files; };