UNPKG

1.17 kBJavaScriptView Raw
1
2/**
3 * Module dependencies.
4 */
5
6var jade = require('./../lib/jade')
7 , Compiler = jade.Compiler
8 , nodes = jade.nodes;
9
10jade.filters.conditionals = function(block, compiler){
11 return new Visitor(block).compile();
12};
13
14function Visitor(node) {
15 this.node = node;
16}
17
18Visitor.prototype.__proto__ = Compiler.prototype;
19
20Visitor.prototype.visit = function(node){
21 if (node.name != 'else') this.line(node);
22 this.visitNode(node);
23};
24
25Visitor.prototype.visitTag = function(node){
26 switch (node.name) {
27 case 'if':
28 // First text -> line
29 var condition = node.text[0]
30 , block = node.block;
31 node = new nodes.Code('if (' + condition + ')');
32 node.block = block;
33 this.visit(node);
34 break;
35 case 'else':
36 var block = node.block;
37 node = new nodes.Code('else');
38 node.block = block;
39 node.instrumentLineNumber = false;
40 this.visit(node);
41 break;
42 default:
43 Compiler.prototype.visitTag.call(this, node);
44 }
45};
46
47var locals = {
48 first: 'tj'
49 , last: 0
50};
51
52jade.renderFile(__dirname + '/test.jade', { locals: locals }, function(err, html){
53 if (err) throw err;
54 console.log(html);
55});
\No newline at end of file