1 |
|
2 |
|
3 |
|
4 |
|
5 |
|
6 | var jade = require('./../lib/jade')
|
7 | , Compiler = jade.Compiler
|
8 | , nodes = jade.nodes;
|
9 |
|
10 | jade.filters.conditionals = function(block, compiler){
|
11 | return new Visitor(block).compile();
|
12 | };
|
13 |
|
14 | function Visitor(node) {
|
15 | this.node = node;
|
16 | }
|
17 |
|
18 | Visitor.prototype.__proto__ = Compiler.prototype;
|
19 |
|
20 | Visitor.prototype.visit = function(node){
|
21 | if (node.name != 'else') this.line(node);
|
22 | this.visitNode(node);
|
23 | };
|
24 |
|
25 | Visitor.prototype.visitTag = function(node){
|
26 | switch (node.name) {
|
27 | case 'if':
|
28 |
|
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 |
|
47 | var locals = {
|
48 | first: 'tj'
|
49 | , last: 0
|
50 | };
|
51 |
|
52 | jade.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 |