json-theme-even-fork/index.js

35 lines
994 B
JavaScript

const fs = require('fs')
const path = require('path')
const Handlebars = require('handlebars')
const extname = '.hbs'
const partialsDir = path.join(__dirname, 'partials')
fs.readdirSync(partialsDir)
.filter(filename => path.extname(filename) === extname)
.map(filename => [
filename,
fs.readFileSync(path.join(partialsDir, filename), 'utf8'),
])
.forEach(([filename, template]) =>
Handlebars.registerPartial(path.basename(filename, extname), template),
)
Handlebars.registerHelper('formatDate', dateString =>
new Date(dateString).toLocaleDateString('en', {
month: 'short',
year: 'numeric',
}),
)
Handlebars.registerHelper('join', (arr, separator) =>
arr.join(typeof separator === 'string' ? separator : ', '),
)
exports.render = resume => {
const template = fs.readFileSync(path.join(__dirname, 'resume.hbs'), 'utf-8')
const css = fs.readFileSync(path.join(__dirname, 'style.css'), 'utf-8')
return Handlebars.compile(template)({ css, resume })
}