UNPKG

exprimus

Version:

Binds Express and any real time engine through Primus

50 lines (43 loc) 1.19 kB
var http = require('http') , extend = require('node.extend') ; function sparkSend(data){ if(typeof data == 'string'){data = {response:data};} else if(data instanceof Error){data = { error:{ message: data.message , name: data.name } };} this.spark.write(data); } function makeSparkRender(properties){ var path = properties['views'] var engineName = properties['view engine']; if(!path){throw new Error('no views path set for render');} if(!engineName){throw new Error('no engine set for render');} engine = require(engineName); renderFunction = engine.__express; return function sparkRender(view,data){ view = view || data.view || 'index'; path+='/'+view+'.'+engineName; var locals = extend(true,{skipLayout:true},this.locals,data) var rendered = renderFunction(path,locals); locals.render = rendered; this.spark.write(locals); } } function SparkResponse(properties){ var sparkRender = makeSparkRender(properties); return function SparkResponseFactory(spark){ var res = { __proto__: http.ServerResponse.prototype , locals:{} , spark:spark , send:sparkSend , render:sparkRender }; return res; } } module.exports = SparkResponse;