UNPKG

mission.template

Version:

mission template for template engine

76 lines (75 loc) 2.77 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); const bwipjs = require("bwip-js"); const fs_1 = require("fs"); const Handlebars = require("handlebars"); require("handlebars"); const _ = require("lodash"); const path_1 = require("path"); class Template { static compile(template, data, compileOptions) { return Handlebars.compile(template, compileOptions)(data); } static register(key, fn) { return Handlebars.registerHelper(key, fn); } static unRegister(key) { Handlebars.unregisterHelper(key); } static registerDefaultApi() { Template.register('_', (...param) => { const method = param[0]; const last = param.length - 2; const input = _.chain(param).drop(1).take(last > 0 ? last : 0).value(); return _[method](input); }); /* <img src="{{barcode data.MRN}}" /> */ Template.register('barcode', (...param) => { const api = require('deasync')(bwipjs.toBuffer); const data = param[0]; const bcid = param[1] || 'code39'; const img = api({ bcid, height: 10, includetext: true, scale: 3, text: data, textfont: 'Inconsolata', textsize: 13, textxalign: 'center', }); const buffer = img.toString('base64'); return 'data:image/png;base64,' + buffer; }); /* ex1: {{include '/Templates/assets/css/core.css'}} ex2: {{{include '/Templates/common/header.tpl.html' 'tpl'}}} ex3: <img src="{{include '/Templates/assets/images/logo.png' 'img'}}" /> */ Template.register('include', (...param) => { const path = param[0]; const fullPath = path_1.resolve(__dirname, '../..' + path); if (fs_1.existsSync(fullPath)) { let response; const type = param[1]; switch (type) { case 'img': response = 'data:image/png;base64,' + fs_1.readFileSync(fullPath, 'base64'); break; case 'tpl': const tpl = fs_1.readFileSync(fullPath, 'utf-8'); const opt = param[param.length - 1]; response = Template.compile(tpl, opt.data.root); break; default: response = fs_1.readFileSync(fullPath, 'utf-8'); break; } return response; } }); } } exports.Template = Template;