smarthbs/ts/index.ts

51 lines
1.8 KiB
TypeScript
Raw Normal View History

2017-02-19 03:12:17 +00:00
import 'typings-global'
import * as handlebars from 'handlebars'
import * as smartfile from 'smartfile'
import * as path from 'path'
export type TTemplateStringType = 'filePath' | 'code'
2017-02-26 01:08:25 +00:00
/**
* registers a directory of partials to make them available within handlebars compilation
*/
2017-02-19 03:12:17 +00:00
export let registerPartialDir = (dirPathArg: string) => {
2017-02-26 01:09:41 +00:00
smartfile.fs.listFileTree(dirPathArg, '**/*.hbs').then(hbsFileArrayArg => {
for (let hbsFilePath of hbsFileArrayArg) {
let parsedPath = path.parse(hbsFilePath)
let hbsFileString = smartfile.fs.toStringSync(path.join(dirPathArg, hbsFilePath))
if (parsedPath.dir === '') {
parsedPath.name = '/' + parsedPath.name
}
let partialName = `partials${parsedPath.dir}${parsedPath.name}`
handlebars.registerPartial(partialName, hbsFileString)
}
})
2017-02-19 03:12:17 +00:00
}
2017-02-26 01:08:25 +00:00
/**
* compiles a directory and outputs it
*/
export let compileDirectory = async (
2017-02-26 01:09:41 +00:00
originDirPathArg: string,
destinationDirPathArg: string,
dataFileNameArg: string
2017-02-19 03:12:17 +00:00
) => {
2017-02-26 01:09:41 +00:00
let hbsFilePathArray = smartfile.fs.listFilesSync(originDirPathArg, /.hbs/)
let data = smartfile.fs.toObjectSync(path.join(originDirPathArg, dataFileNameArg))
for (let hbsFilePath of hbsFilePathArray) {
let parsedPath = path.parse(hbsFilePath)
let hbsFileString = smartfile.fs.toStringSync(path.join(originDirPathArg, hbsFilePath))
let template = handlebars.compile(hbsFileString)
let output = template(data)
console.log('hi ' + output + ' hi')
smartfile.memory.toFsSync(output, path.join(destinationDirPathArg, parsedPath.name + '.html'))
}
2017-02-26 01:08:25 +00:00
}
/**
* get a template for a file on disk
*/
export let getTemplateForFile = async (filePathArg: string) => {
2017-02-26 01:09:41 +00:00
let filePathAbsolute = path.resolve(filePathArg)
return handlebars.compile(smartfile.fs.toStringSync(filePathAbsolute))
2017-02-26 01:08:25 +00:00
}