UNPKG

daruk-cli

Version:
41 lines (39 loc) 1.23 kB
const async = require('async') const multimatch = require('multimatch') const render = require('consolidate').handlebars.render /** * Template in place plugin. * * @param {Object} files * @param {Metalsmith} metalsmith * @param {Function} done */ module.exports = function (skipInterpolation) { skipInterpolation = typeof skipInterpolation === 'string' ? [skipInterpolation] : skipInterpolation return (files, metalsmith, done) => { const keys = Object.keys(files) const metalsmithMetadata = metalsmith.metadata() async.each(keys, (file, next) => { // skipping files with skipInterpolation option if (skipInterpolation && multimatch([file], skipInterpolation, { dot: true }).length) { return next() } const str = files[file].contents.toString() // do not attempt to render files that do not have mustaches if (!/{{([^{}]+)}}/g.test(str)) { return next() } render(str, metalsmithMetadata, (err, res) => { if (err) { err.message = `[${file}] ${err.message}` return next(err) } // eslint-disable-next-line files[file].contents = new Buffer(res) next() }) }, done) } }