UNPKG

propertext-mold

Version:

Render propertext files with Mold templates

40 lines (31 loc) 943 B
var { basename, dirname, extname, join } = require('path') var Mold = require('mold-template') var fs = require('fs') var ptext = require('propertext') module.exports = function mold (layouts, opts = {}) { var self = new Mold(opts.globals) return function (file) { var props = ptext(String(file.contents)) if (props.layout) { file.path = rewrite(file.path, props) file.contents = cast(props, file) } return file } function rewrite (path, props) { var dir = dirname(path) var base = basename(path, extname(path)) var ext = extname(props.layout) return join(dir, base + ext) } function cast (props, file) { var template = layout(props.layout) return Buffer.from(template({ props, file })) } function layout (name) { if (self.defs[name]) return self.defs[name] var view = fs.readFileSync(join(layouts, name), 'utf8') return self.bake(name, view) } }