1 | var log = require('ee-log'),
|
2 | Class = require('ee-class'),
|
3 | EventEmitter = require('ee-event-emitter');
|
4 |
|
5 | var extensions = require('./extensions'),
|
6 | renderer = require('./renderer');
|
7 |
|
8 | var TemplatingMiddleware = new Class({
|
9 |
|
10 | inherits: EventEmitter
|
11 | , factory: null
|
12 | , container: null
|
13 | , environments: null
|
14 |
|
15 | , init: function initialize(environments){
|
16 | this.environments = environments;
|
17 | this.factory = new renderer.Factory(environments);
|
18 | }
|
19 |
|
20 | , request: function (request, response, next) {
|
21 |
|
22 |
|
23 | var template = request.template || '',
|
24 | renderer = this.createRenderer(request);
|
25 |
|
26 | response.render = function (status, language, headers, data, callback) {
|
27 |
|
28 | var context = {content: data, template: template, language:language};
|
29 |
|
30 | renderer.render(context, function(err, content, type){
|
31 |
|
32 |
|
33 | if(err){
|
34 | this.send(500, err.message);
|
35 | return callback(err);
|
36 | }
|
37 |
|
38 |
|
39 | this.setContentType(type+'; charset=utf8');
|
40 | this.setHeaders(headers || {});
|
41 | this.setHeader('content-language', language);
|
42 |
|
43 |
|
44 | this.send(status, content);
|
45 | callback();
|
46 | }.bind(this));
|
47 | }.bind(response);
|
48 |
|
49 | next();
|
50 | }
|
51 |
|
52 | , createRenderer: function(request){
|
53 | return this.factory.create(request);
|
54 | }
|
55 | });
|
56 |
|
57 | module.exports = TemplatingMiddleware; |
\ | No newline at end of file |