UNPKG

hikaru-coffee

Version:

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

70 lines (63 loc) 1.88 kB
// Generated by CoffeeScript 2.3.1 (function() { var Renderer, path, indexOf = [].indexOf; path = require("path"); module.exports = Renderer = class Renderer { constructor(logger, skipRenderList) { // fn: param data, ctx, return Promise this.register = this.register.bind(this); this.render = this.render.bind(this); this.logger = logger; this.store = {}; this.skipRenderList = skipRenderList || []; } register(srcExt, docExt, fn) { var i, len, s; if (!(fn instanceof Function)) { return; } if (srcExt instanceof Array) { for (i = 0, len = srcExt.length; i < len; i++) { s = srcExt[i]; this.store[s] = { "srcExt": s, "docExt": docExt, "fn": fn }; } return; } return this.store[srcExt] = { "srcExt": srcExt, "docExt": docExt, "fn": fn }; } render(data, ctx) { var basename, dirname, docExt, ref, srcExt; srcExt = path.extname(data["srcPath"]); if (srcExt in this.store && (ref = data["srcPath"], indexOf.call(this.skipRenderList, ref) < 0)) { docExt = this.store[srcExt]["docExt"]; if (docExt != null) { dirname = path.dirname(data["srcPath"]); basename = path.basename(data["srcPath"], srcExt); data["docPath"] = path.join(dirname, `${basename}${docExt}`); } else { data["docPath"] = data["srcPath"]; } return this.store[srcExt]["fn"](data, ctx); } return new Promise(function(resolve, reject) { var err; try { data["docPath"] = data["srcPath"]; return resolve(data); } catch (error) { err = error; return reject(err); } }); } }; }).call(this);