UNPKG

3.65 kBJavaScriptView Raw
1var Lab = require('lab');
2var Parser = require('../lib/parser');
3var assert = require('chai').assert;
4
5var lab = exports.lab = Lab.script();
6
7
8lab.experiment('Parser', function() {
9
10 lab.test('._getIndent()', function(done) {
11 var parser = new Parser();
12
13 assert.equal(parser._getIndent(' '), 1);
14 assert.equal(parser._getIndent(' '), 1);
15 assert.equal(parser._getIndent(' . text'), 1);
16
17 assert.equal(parser._getIndent(' bold'), 2);
18 assert.equal(parser._getIndent('\t strong'), 3);
19
20 done();
21 });
22
23 lab.test('.exec()', function(done) {
24 var parser = new Parser();
25
26 assert.deepEqual(
27 parser.exec(' '),
28 [ 'multi', [ 'newline' ] ]
29 );
30
31 assert.deepEqual(
32 parser.exec('/ text'),
33 ['multi', ['newline']]
34 );
35
36 assert.deepEqual(
37 parser.exec('/ line 1\n line 2'),
38 ['multi', ['newline'], ['newline']]
39 );
40
41 assert.deepEqual(
42 parser.exec('== 5'),
43 [
44 'multi',
45 ['slm', 'output', false, '5', ['multi', ['newline']]]
46 ]
47 );
48
49 assert.deepEqual(
50 parser.exec('p nice'),
51 [
52 'multi',
53 [
54 'html', 'tag', 'p',
55 ['html', 'attrs'],
56 ['slm', 'text',
57 ['multi', ['slm', 'interpolate', 'nice']]]], ['newline']
58 ]
59 );
60
61 assert.deepEqual(
62 parser.exec('. text'),
63 [
64 'multi',
65 [
66 'slm', 'text',
67 ['multi', ['slm', 'interpolate', 'text']]
68 ],
69 ['static', ' '], ['newline']
70 ]
71 );
72
73 assert.deepEqual(
74 parser.exec('p.alert'),
75 [
76 'multi',
77 [
78 'html', 'tag', 'p',
79 [
80 'html', 'attrs',
81 ['html', 'attr', 'class', ['static', 'alert']]
82 ],
83 ['multi', ['newline']]
84 ]
85 ]
86 );
87
88 assert.deepEqual(
89 parser.exec('a href="http://anjlab.ru" AnjLab'),
90 [
91 'multi',
92 [
93 'html', 'tag', 'a',
94 [
95 'html', 'attrs',
96 [
97 'html', 'attr', 'href',
98 [
99 'escape', true,
100 ['slm', 'interpolate', 'http://anjlab.ru']
101 ]
102 ]
103 ],
104 [
105 'slm', 'text',
106 [
107 'multi',
108 ['slm', 'interpolate', 'AnjLab']
109 ]
110 ]
111 ],
112 ['newline']
113 ]
114 );
115
116 assert.deepEqual(
117 parser.exec('/[if IE]\n p Get a better browser.'),
118 [
119 'multi',
120 ['html', 'condcomment', 'if IE',
121 [
122 'multi',
123 ['newline'],
124 ['html', 'tag', 'p', ['html', 'attrs'], ['slm', 'text',
125 ['multi', ['slm', 'interpolate', 'Get a better browser.']]
126 ]],
127 ['newline']
128 ]
129 ]
130 ]
131 );
132
133 assert.deepEqual(
134 parser.exec('p = 10'),
135 [
136 'multi',
137 [
138 'html', 'tag', 'p',
139 ['html', 'attrs'],
140 ['slm', 'output', true, '10', ['multi', ['newline']]]
141 ]
142 ]
143 );
144
145 var code =
146 '- if (x)\n' +
147 ' p = x\n' +
148 'p nice';
149
150 assert.deepEqual(
151 parser.exec(code),
152 [
153 'multi',
154 [
155 'slm', 'control', 'if (x)',
156 [
157 'multi',
158 ['newline'],
159 [
160 'html', 'tag', 'p',
161 ['html', 'attrs'],
162 ['slm', 'output', true, 'x', ['multi', ['newline']]]
163 ]
164 ]
165 ],
166 ['html', 'tag', 'p', ['html', 'attrs'], ['slm', 'text', ['multi', ['slm', 'interpolate', 'nice']]]], ['newline']
167 ]
168 );
169
170 done();
171 });
172});