json-theme-even-fork/index.js

57 lines
1.6 KiB
JavaScript
Raw Normal View History

2020-07-05 14:54:30 +02:00
const fs = require('fs')
const path = require('path')
2020-07-05 14:54:30 +02:00
const Handlebars = require('handlebars')
const micromark = require('micromark')
const striptags = require('striptags')
2018-09-23 20:28:05 +02:00
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('formatCountry', countryCode =>
Intl.DisplayNames
? new Intl.DisplayNames(['en'], { type: 'region' }).of(countryCode)
: countryCode,
)
2020-07-05 14:54:30 +02:00
Handlebars.registerHelper('formatDate', dateString =>
new Date(dateString).toLocaleDateString('en', {
month: 'short',
year: 'numeric',
2020-07-05 14:54:30 +02:00
}),
)
2018-09-23 20:28:05 +02:00
Handlebars.registerHelper('formatPhone', phone =>
phone.replace(/[^\d|+]+/g, ''),
)
Handlebars.registerHelper('formatURL', url =>
url.replace(/^(https?:|)\/\//, '').replace(/\/$/, ''),
)
2020-07-05 14:54:30 +02:00
Handlebars.registerHelper('join', (arr, separator) =>
arr.join(typeof separator === 'string' ? separator : ', '),
)
Handlebars.registerHelper('markdown', doc => micromark(doc))
Handlebars.registerHelper('stripTags', html => striptags(html))
2020-11-03 17:44:00 +01:00
exports.pdfRenderOptions = { mediaType: 'print' }
2020-07-05 14:54:30 +02:00
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')
2020-07-05 14:54:30 +02:00
return Handlebars.compile(template)({ css, resume })
}