UNPKG

hikaru-coffee

Version:

A static site generator that generates routes based on directories naturally.

81 lines (71 loc) 2.35 kB
// Generated by CoffeeScript 2.3.1 (function() { var Promise, Renderer, colors, path, indexOf = [].indexOf; path = require("path"); colors = require("colors/safe"); Promise = require("bluebird"); Renderer = class Renderer { constructor(logger, skipRenderList) { // fn: param file, ctx, return Promise this.register = this.register.bind(this); this.render = this.render.bind(this); this.logger = logger; this._ = {}; this.skipRenderList = skipRenderList || []; } register(srcExt, docExt, fn) { var i, len, s; if (!(fn instanceof Function)) { throw new TypeError("fn must be a Function!"); return; } if (srcExt instanceof Array) { for (i = 0, len = srcExt.length; i < len; i++) { s = srcExt[i]; this._[s] = { "srcExt": s, "docExt": docExt, "fn": fn }; } return; } return this._[srcExt] = { "srcExt": srcExt, "docExt": docExt, "fn": fn }; } render(file, ctx) { var basename, dirname, docExt, ref, srcExt; srcExt = path.extname(file["srcPath"]); if (srcExt in this._ && (ref = file["srcPath"], indexOf.call(this.skipRenderList, ref) < 0)) { docExt = this._[srcExt]["docExt"]; if (docExt != null) { dirname = path.dirname(file["srcPath"]); basename = path.basename(file["srcPath"], srcExt); file["docPath"] = path.join(dirname, `${basename}${docExt}`); this.logger.debug(`Hikaru is rendering \`${colors.cyan(file["srcPath"])}\` to \`${colors.cyan(file["docPath"])}\`...`); } else { file["docPath"] = file["srcPath"]; this.logger.debug(`Hikaru is rendering \`${colors.cyan(file["srcPath"])}\`...`); } return this._[srcExt]["fn"](file, ctx); } return new Promise((resolve, reject) => { var err; try { file["docPath"] = file["srcPath"]; this.logger.debug(`Hikaru is rendering \`${colors.cyan(file["srcPath"])}\`...`); file["content"] = file["raw"]; return resolve(file); } catch (error) { err = error; return reject(err); } }); } }; module.exports = Renderer; }).call(this);