You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
Engine_Rebuild/util_src/templates.ts

43 lines
1.3 KiB
TypeScript

let fs = require('fs')
let Mustache = require('mustache')
const crypto = require('crypto')
import {FileUtils} from './fileutils'
import {CardModel} from "./viewFactory";
interface TemplateCallbackType {
(rendered: string[]): void
}
export function loadTemplate(filename: string, objs: object[], cb: TemplateCallbackType) {
let fu = new FileUtils();
let path = fu.getPathToView(filename);
fs.readFile(path, 'utf8', (err, contents) => {
if (err) throw err;
let results: string[] = []
for (let i = 0, l = objs.length; i < l; i++) {
let obj = objs[i]
let rendered = Mustache.render(contents, obj)
results.push(rendered)
}
cb(results)
})
}
export function loadTemplateSingle(filename: string, obj: CardModel, cb: (content: string, id: string) => void) {
let fu = new FileUtils();
let path = fu.getPathToView(filename);
fs.readFile(path, 'utf8', (err, contents) => {
if (err) throw err;
obj['id'] = createId(obj.fileName);
let rendered = Mustache.render(contents, obj)
cb(rendered, obj['id'])
})
}
function createId(fileName: String){
return crypto.createHash('md5').update(fileName).digest('hex');
}
module.exports = {loadTemplate, loadTemplateSingle}