express-hbs 2.5.0 → 3.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/test/i18nSpecs.js CHANGED
@@ -2,31 +2,33 @@ var request = require('supertest');
2
2
  var assert = require('assert');
3
3
  var hbs = require('..');
4
4
 
5
- describe('i18n', function() {
5
+ describe('i18n', function () {
6
6
  var app;
7
7
 
8
- beforeEach(function() {
8
+ beforeEach(function () {
9
9
  var apper = require('./apps/i18n');
10
10
  app = apper.create(hbs.create());
11
11
  });
12
12
 
13
- it('should render en', function(done) {
13
+ it('should render en', function (done) {
14
14
  request(app)
15
15
  .get('/')
16
16
  .set('Cookie', 'locale=en')
17
- .end(function(req, res) {
18
- var expected = '<span id="text">text to test</span>\n<br>\n<span class="each">1 cat</span><span class="each">2 cats</span>';
17
+ .end(function (req, res) {
18
+ var expected =
19
+ '<span id="text">text to test</span>\n<br>\n<span class="each">1 cat</span><span class="each">2 cats</span>';
19
20
  assert.equal(res.text, expected);
20
21
  done();
21
22
  });
22
23
  });
23
24
 
24
- it('should render fr', function(done) {
25
+ it('should render fr', function (done) {
25
26
  request(app)
26
27
  .get('/')
27
28
  .set('Cookie', 'locale=fr')
28
- .end(function(req, res) {
29
- var expected = '<span id="text">Texte à tester</span>\n<br>\n<span class="chaque">1 chat</span><span class="chaque">2 chats</span>';
29
+ .end(function (req, res) {
30
+ var expected =
31
+ '<span id="text">Texte à tester</span>\n<br>\n<span class="chaque">1 chat</span><span class="chaque">2 chats</span>';
30
32
  assert.equal(res.text, expected);
31
33
  done();
32
34
  });
package/test/issues.js CHANGED
@@ -4,21 +4,20 @@ var hbs = require('..');
4
4
  var path = require('path');
5
5
  var H = require('./helpers');
6
6
 
7
-
8
- describe('issue-22 template', function() {
7
+ describe('issue-22 template', function () {
9
8
  var dirname = path.join(__dirname, 'issues/22');
10
9
 
11
- it('should use multiple layouts with caching', function(done) {
10
+ it('should use multiple layouts with caching', function (done) {
12
11
  var render = hbs.create().express3({
13
- restrictLayoutsTo: dirname
12
+ restrictLayoutsTo: dirname,
14
13
  });
15
14
  var locals1 = H.createLocals('express3', dirname, { layout: 'layout1', cache: true });
16
15
  var locals2 = H.createLocals('express3', dirname, { layout: 'layout2', cache: true });
17
16
 
18
- render(dirname + '/template.hbs', locals1, function(err, html) {
17
+ render(dirname + '/template.hbs', locals1, function (err, html) {
19
18
  assert.ifError(err);
20
19
  assert.equal('<layout1>template</layout1>', H.stripWs(html));
21
- render(dirname + '/template.hbs', locals2, function(err, html) {
20
+ render(dirname + '/template.hbs', locals2, function (err, html) {
22
21
  assert.ifError(err);
23
22
  assert.equal('<layout2>template</layout2>', H.stripWs(html));
24
23
  done();
@@ -27,13 +26,13 @@ describe('issue-22 template', function() {
27
26
  });
28
27
  });
29
28
 
30
- describe('issue-23', function() {
31
- var dirname = path.join(__dirname, 'issues/23');
29
+ describe('issue-23', function () {
30
+ var dirname = path.join(__dirname, 'issues/23');
32
31
 
33
- it('should not pass an empty or missing partial to handlebars', function(done) {
32
+ it('should not pass an empty or missing partial to handlebars', function (done) {
34
33
  var render = hbs.create().express3({
35
34
  partialsDir: [dirname + '/partials'],
36
- restrictLayoutsTo: dirname
35
+ restrictLayoutsTo: dirname,
37
36
  });
38
37
 
39
38
  function check(err, html) {
@@ -41,13 +40,17 @@ describe('issue-23', function() {
41
40
  assert.equal('<html>Hello</html>', H.stripWs(html));
42
41
  done();
43
42
  }
44
- var result = render(dirname + '/index.hbs', {cache: true, settings: {views: dirname + '/views'}}, check);
43
+ var result = render(
44
+ dirname + '/index.hbs',
45
+ { cache: true, settings: { views: dirname + '/views' } },
46
+ check,
47
+ );
45
48
  });
46
49
 
47
- it('should handle empty string', function(done) {
50
+ it('should handle empty string', function (done) {
48
51
  var render = hbs.create().express3({
49
52
  partialsDir: [dirname + '/partials'],
50
- restrictLayoutsTo: dirname
53
+ restrictLayoutsTo: dirname,
51
54
  });
52
55
 
53
56
  function check(err, html) {
@@ -55,15 +58,18 @@ describe('issue-23', function() {
55
58
  assert.equal('', H.stripWs(html));
56
59
  done();
57
60
  }
58
- var result = render(dirname + '/empty.hbs', {cache: true, settings: {views: dirname + '/views'}}, check);
61
+ var result = render(
62
+ dirname + '/empty.hbs',
63
+ { cache: true, settings: { views: dirname + '/views' } },
64
+ check,
65
+ );
59
66
  });
60
67
 
61
-
62
- it('should register empty partial', function(done) {
68
+ it('should register empty partial', function (done) {
63
69
  var hb = hbs.create();
64
70
  var render = hb.express3({
65
71
  partialsDir: [dirname + '/partials'],
66
- restrictLayoutsTo: dirname
72
+ restrictLayoutsTo: dirname,
67
73
  });
68
74
  hb.handlebars.registerPartial('emptyPartial', '');
69
75
 
@@ -79,16 +85,20 @@ describe('issue-23', function() {
79
85
  }
80
86
  }
81
87
  function doIt() {
82
- render(dirname + '/emptyPartial.hbs', {cache: true, settings: {views: dirname + '/views'}}, check);
88
+ render(
89
+ dirname + '/emptyPartial.hbs',
90
+ { cache: true, settings: { views: dirname + '/views' } },
91
+ check,
92
+ );
83
93
  }
84
94
  doIt();
85
95
  });
86
96
 
87
- it('should register partial that results in empty string (comment)', function(done) {
97
+ it('should register partial that results in empty string (comment)', function (done) {
88
98
  var hb = hbs.create();
89
99
  var render = hb.express3({
90
100
  partialsDir: [dirname + '/partials'],
91
- restrictLayoutsTo: dirname
101
+ restrictLayoutsTo: dirname,
92
102
  });
93
103
  // this fails
94
104
  //hb.handlebars.registerPartial('emptyComment', '{{! just a comment}}');
@@ -106,67 +116,75 @@ describe('issue-23', function() {
106
116
  }
107
117
  }
108
118
  function doIt() {
109
- render(dirname + '/emptyComment.hbs', {cache: true, settings: {views: dirname + '/views'}}, check);
119
+ render(
120
+ dirname + '/emptyComment.hbs',
121
+ { cache: true, settings: { views: dirname + '/views' } },
122
+ check,
123
+ );
110
124
  }
111
125
  doIt();
112
126
  });
113
127
  });
114
128
 
115
-
116
- describe('issue-21', function() {
117
- var dirname = path.join(__dirname, 'issues/21');
129
+ describe('issue-21', function () {
130
+ var dirname = path.join(__dirname, 'issues/21');
118
131
  var render = hbs.create().express3({
119
132
  layoutsDir: dirname + '/views/layouts',
120
- restrictLayoutsTo: dirname
133
+ restrictLayoutsTo: dirname,
121
134
  });
122
135
 
123
- it('should allow specifying layouts without the parent dir', function(done) {
136
+ it('should allow specifying layouts without the parent dir', function (done) {
124
137
  function check(err, html) {
125
138
  assert.ifError(err);
126
139
  assert.equal('<html>index</html>', H.stripWs(html));
127
140
  done();
128
141
  }
129
142
 
130
- var options = {cache: true, layout: 'default', settings: {views: dirname + '/views'}};
143
+ var options = { cache: true, layout: 'default', settings: { views: dirname + '/views' } };
131
144
  var result = render(dirname + '/views/index.hbs', options, check);
132
145
  });
133
146
 
147
+ it('should allow specifying layouts without the parent dir in a sub view', function (done) {
148
+ function check(err, html) {
149
+ assert.ifError(err);
150
+ assert.equal('<html>sub</html>', H.stripWs(html));
151
+ done();
152
+ }
134
153
 
135
- it('should allow specifying layouts without the parent dir in a sub view', function(done) { function check(err, html) {
136
- assert.ifError(err);
137
- assert.equal('<html>sub</html>', H.stripWs(html));
138
- done();
139
- }
140
-
141
- var options = {cache: true, layout: 'default', settings: {views: dirname + '/views'}};
142
- var result = render(dirname + '/views/sub/sub.hbs', options, check);
154
+ var options = { cache: true, layout: 'default', settings: { views: dirname + '/views' } };
155
+ var result = render(dirname + '/views/sub/sub.hbs', options, check);
143
156
  });
144
157
 
145
- it('should treat layouts that start with "." relative to template', function(done) { function check(err, html) {
146
- assert.ifError(err);
147
- assert.equal('<relative>sub</relative>', H.stripWs(html));
148
- done();
149
- }
158
+ it('should treat layouts that start with "." relative to template', function (done) {
159
+ function check(err, html) {
160
+ assert.ifError(err);
161
+ assert.equal('<relative>sub</relative>', H.stripWs(html));
162
+ done();
163
+ }
150
164
 
151
- var options = {cache: true, layout: './relativeLayout', settings: {views: dirname + '/views'}};
152
- var result = render(dirname + '/views/sub/sub.hbs', options, check);
165
+ var options = {
166
+ cache: true,
167
+ layout: './relativeLayout',
168
+ settings: { views: dirname + '/views' },
169
+ };
170
+ var result = render(dirname + '/views/sub/sub.hbs', options, check);
153
171
  });
154
172
 
155
- it('should allow layouts in subfolders', function(done) {
173
+ it('should allow layouts in subfolders', function (done) {
156
174
  function check(err, html) {
157
175
  assert.ifError(err);
158
176
  assert.equal('<sub>useLayoutInDir</sub>', H.stripWs(html));
159
177
  done();
160
178
  }
161
179
 
162
- var options = {cache: true, layout: 'sub/child', settings: {views: dirname + '/views'}};
180
+ var options = { cache: true, layout: 'sub/child', settings: { views: dirname + '/views' } };
163
181
  var result = render(dirname + '/views/useLayoutInDir.hbs', options, check);
164
182
  });
165
183
 
166
- it('should treat layouts relative to views directory if layoutsDir is not passed', function(done) {
167
- var dirname = path.join(__dirname, 'issues/21');
184
+ it('should treat layouts relative to views directory if layoutsDir is not passed', function (done) {
185
+ var dirname = path.join(__dirname, 'issues/21');
168
186
  var render = hbs.create().express3({
169
- restrictLayoutsTo: dirname
187
+ restrictLayoutsTo: dirname,
170
188
  });
171
189
 
172
190
  function check(err, html) {
@@ -175,82 +193,85 @@ describe('issue-21', function() {
175
193
  done();
176
194
  }
177
195
 
178
- var options = {cache: true, layout: 'layouts/sub/child', settings: {views: dirname + '/views'}};
196
+ var options = {
197
+ cache: true,
198
+ layout: 'layouts/sub/child',
199
+ settings: { views: dirname + '/views' },
200
+ };
179
201
  var result = render(dirname + '/views/sub/sub.hbs', options, check);
180
202
  });
181
203
  });
182
204
 
205
+ describe('issue-49', function () {
206
+ var dirname = path.join(__dirname, 'issues/49');
183
207
 
184
- describe('issue-49', function() {
185
- var dirname = path.join(__dirname, 'issues/49');
186
-
187
- it('should report filename with error', function(done) {
188
- var hb = hbs.create()
208
+ it('should report filename with error', function (done) {
209
+ var hb = hbs.create();
189
210
  var render = hb.express3({
190
- restrictLayoutsTo: dirname
211
+ restrictLayoutsTo: dirname,
191
212
  });
192
213
  var locals = H.createLocals('express3', dirname, {});
193
- render(dirname + '/error.hbs', locals, function(err, html) {
214
+ render(dirname + '/error.hbs', locals, function (err, html) {
194
215
  assert(err.stack.indexOf('[error.hbs]') > 0);
195
216
  done();
196
217
  });
197
218
  });
198
219
 
199
- it('should report relative filename with error', function(done) {
200
- var hb = hbs.create()
220
+ it('should report relative filename with error', function (done) {
221
+ var hb = hbs.create();
201
222
  var render = hb.express3({
202
- restrictLayoutsTo: dirname
223
+ restrictLayoutsTo: dirname,
203
224
  });
204
225
  var locals = H.createLocals('express3', dirname, {});
205
- render(dirname + '/front/error.hbs', locals, function(err, html) {
226
+ render(dirname + '/front/error.hbs', locals, function (err, html) {
206
227
  assert(err.stack.indexOf('[front/error.hbs]') > 0);
207
228
  done();
208
229
  });
209
230
  });
210
231
 
211
- it('should report filename with partial error', function(done) {
212
- var hb = hbs.create()
232
+ it('should report filename with partial error', function (done) {
233
+ var hb = hbs.create();
213
234
  var render = hb.express3({
214
235
  partialsDir: dirname + '/partials',
215
- restrictLayoutsTo: dirname
236
+ restrictLayoutsTo: dirname,
216
237
  });
217
238
  var locals = H.createLocals('express3', dirname, {});
218
- render(dirname + '/partial.hbs', locals, function(err, html) {
239
+ render(dirname + '/partial.hbs', locals, function (err, html) {
219
240
  assert(err.stack.indexOf('[partial.hbs]') > 0);
220
241
  done();
221
242
  });
222
243
  });
223
244
 
224
- it('should report filename with layout error', function(done) {
225
- var hb = hbs.create()
245
+ it('should report filename with layout error', function (done) {
246
+ var hb = hbs.create();
226
247
  var render = hb.express3({
227
248
  partialsDir: dirname + '/partials',
228
- restrictLayoutsTo: dirname
249
+ restrictLayoutsTo: dirname,
229
250
  });
230
251
  var locals = H.createLocals('express3', dirname, {});
231
- render(dirname + '/index.hbs', locals, function(err, html) {
252
+ render(dirname + '/index.hbs', locals, function (err, html) {
232
253
  assert(err.stack.indexOf('[layouts/default.hbs]') > 0);
233
254
  done();
234
255
  });
235
256
  });
236
257
  });
237
258
 
238
- describe('issue-53', function() {
239
- var dirname = path.join(__dirname, 'issues/53');
259
+ describe('issue-53', function () {
260
+ var dirname = path.join(__dirname, 'issues/53');
240
261
 
241
- it('should use block with async helpers', function(done) {
242
- var hb = hbs.create()
262
+ it('should use block with async helpers', function (done) {
263
+ var hb = hbs.create();
243
264
  var res = 0;
244
- hb.registerAsyncHelper('weird', function(_, resultcb) {
245
- setTimeout(function() {
265
+ hb.registerAsyncHelper('weird', function (_, resultcb) {
266
+ setTimeout(function () {
246
267
  resultcb(++res);
247
- }, 1)
268
+ }, 1);
248
269
  });
249
270
  var render = hb.express3({
250
- restrictLayoutsTo: dirname
271
+ restrictLayoutsTo: dirname,
251
272
  });
252
273
  var locals = H.createLocals('express3', dirname, {});
253
- render(dirname + '/index.hbs', locals, function(err, html) {
274
+ render(dirname + '/index.hbs', locals, function (err, html) {
254
275
  assert.ifError(err);
255
276
  assert.ok(html.indexOf('__aSyNcId_') < 0);
256
277
  done();
@@ -258,7 +279,7 @@ describe('issue-53', function() {
258
279
  });
259
280
  });
260
281
 
261
- describe('issue-59', function() {
282
+ describe('issue-59', function () {
262
283
  var dirname = __dirname + '/issues/59';
263
284
  it('should escape or not', function (done) {
264
285
  var hb = hbs.create();
@@ -267,11 +288,11 @@ describe('issue-59', function() {
267
288
  cb('<strong>' + s + '</strong>');
268
289
  }
269
290
 
270
- hb.registerAsyncHelper("async", async);
291
+ hb.registerAsyncHelper('async', async);
271
292
 
272
293
  var render = hb.express3({
273
294
  viewsDir: dirname,
274
- restrictLayoutsTo: dirname
295
+ restrictLayoutsTo: dirname,
275
296
  });
276
297
  var locals = H.createLocals('express3', dirname);
277
298
 
@@ -291,7 +312,7 @@ describe('issue-59', function() {
291
312
 
292
313
  var render = hb.express3({
293
314
  viewsDir: dirname,
294
- restrictLayoutsTo: dirname
315
+ restrictLayoutsTo: dirname,
295
316
  });
296
317
  var locals = H.createLocals('express3', dirname);
297
318
 
@@ -302,21 +323,21 @@ describe('issue-59', function() {
302
323
  });
303
324
  });
304
325
 
305
- describe('issue-73', function() {
326
+ describe('issue-73', function () {
306
327
  var dirname = path.join(__dirname, 'issues/73');
307
- it('should allow compile options', function(done){
328
+ it('should allow compile options', function (done) {
308
329
  var hb = hbs.create();
309
330
  var render = hb.express3({
310
331
  viewsDir: dirname,
311
332
  partialsDir: dirname + '/partials',
312
333
  restrictLayoutsTo: dirname,
313
- onCompile: function(eh, source, filename) {
334
+ onCompile: function (eh, source, filename) {
314
335
  var options;
315
336
  if (filename && filename.indexOf('partials')) {
316
- options = {preventIndent: true};
337
+ options = { preventIndent: true };
317
338
  }
318
339
  return eh.handlebars.compile(source, options);
319
- }
340
+ },
320
341
  });
321
342
 
322
343
  var locals = H.createLocals('express3', dirname);
@@ -331,8 +352,7 @@ describe('issue-73', function() {
331
352
  });
332
353
  });
333
354
 
334
-
335
- describe('issue-62', function() {
355
+ describe('issue-62', function () {
336
356
  var dirname = path.join(__dirname, 'issues/62');
337
357
 
338
358
  it('should provide options for async helpers', function (done) {
@@ -346,19 +366,16 @@ describe('issue-62', function() {
346
366
  }
347
367
  }
348
368
 
349
- hb.registerAsyncHelper("async", async);
369
+ hb.registerAsyncHelper('async', async);
350
370
 
351
371
  var render = hb.express3({
352
372
  viewsDir: dirname,
353
- restrictLayoutsTo: dirname
373
+ restrictLayoutsTo: dirname,
354
374
  });
355
375
  var locals = H.createLocals('express3', dirname);
356
376
 
357
377
  render(dirname + '/basic.hbs', locals, function (err, html) {
358
- assert.equal(
359
- H.stripWs(html),
360
- '&lt;strong&gt;foo&lt;/strong&gt;&lt;em&gt;foo&lt;/em&gt;'
361
- );
378
+ assert.equal(H.stripWs(html), '&lt;strong&gt;foo&lt;/strong&gt;&lt;em&gt;foo&lt;/em&gt;');
362
379
  done();
363
380
  });
364
381
  });
@@ -377,33 +394,30 @@ describe('issue-62', function() {
377
394
  }
378
395
  }
379
396
 
380
- hb.registerAsyncHelper("async", async);
397
+ hb.registerAsyncHelper('async', async);
381
398
 
382
399
  var render = hb.express3({
383
400
  viewsDir: dirname,
384
- restrictLayoutsTo: dirname
401
+ restrictLayoutsTo: dirname,
385
402
  });
386
403
  var locals = H.createLocals('express3', dirname);
387
404
 
388
405
  render(dirname + '/block.hbs', locals, function (err, html) {
389
- assert.equal(
390
- H.stripWs(html),
391
- '<p>GoodbyeWorld</p><p>HelloHandlebars</p>'
392
- );
406
+ assert.equal(H.stripWs(html), '<p>GoodbyeWorld</p><p>HelloHandlebars</p>');
393
407
  done();
394
408
  });
395
409
  });
396
410
  });
397
411
 
398
- describe('issue-76', function() {
399
- var dirname = path.join(__dirname, 'issues/76');
412
+ describe('issue-76', function () {
413
+ var dirname = path.join(__dirname, 'issues/76');
400
414
 
401
415
  it('should allow cachePartials to be called independently of render', function (done) {
402
416
  var hb = hbs.create();
403
417
 
404
418
  var render = hb.express3({
405
419
  partialsDir: dirname,
406
- restrictLayoutsTo: dirname
420
+ restrictLayoutsTo: dirname,
407
421
  });
408
422
 
409
423
  hb.cachePartials(function (err) {
@@ -415,12 +429,12 @@ describe('issue-76', function() {
415
429
  });
416
430
 
417
431
  describe('issue-84', function () {
418
- var dirname = path.join(__dirname, 'issues/84');
432
+ var dirname = path.join(__dirname, 'issues/84');
419
433
 
420
434
  it('should render deeply nested partials', function (done) {
421
435
  var render = hbs.create().express3({
422
436
  partialsDir: [dirname + '/partials'],
423
- restrictLayoutsTo: dirname
437
+ restrictLayoutsTo: dirname,
424
438
  });
425
439
 
426
440
  function check(err, html) {
@@ -431,46 +445,46 @@ describe('issue-84', function () {
431
445
  done();
432
446
  }
433
447
 
434
- render(dirname + '/index.hbs', {cache: true, settings: {views: dirname + '/views'}}, check);
448
+ render(dirname + '/index.hbs', { cache: true, settings: { views: dirname + '/views' } }, check);
435
449
  });
436
450
  });
437
451
 
438
- describe('issue-144', function() {
439
- var dirname = path.join(__dirname, 'issues/144');
452
+ describe('issue-144', function () {
453
+ var dirname = path.join(__dirname, 'issues/144');
440
454
 
441
- it('should repalce with async helpers even special string like $\'', function(done) {
442
- var hb = hbs.create()
443
- hb.registerAsyncHelper('special_string', function(_, resultcb) {
444
- setTimeout(function() {
445
- resultcb(new hbs.SafeString('<p><code>\'$example$\'</code> abcd</p>'));
446
- }, 1)
455
+ it("should repalce with async helpers even special string like $'", function (done) {
456
+ var hb = hbs.create();
457
+ hb.registerAsyncHelper('special_string', function (_, resultcb) {
458
+ setTimeout(function () {
459
+ resultcb(new hbs.SafeString("<p><code>'$example$'</code> abcd</p>"));
460
+ }, 1);
447
461
  });
448
462
  var render = hb.express3({
449
- restrictLayoutsTo: dirname
463
+ restrictLayoutsTo: dirname,
450
464
  });
451
465
  var locals = H.createLocals('express3', dirname, {});
452
- render(dirname + '/index.hbs', locals, function(err, html) {
453
- assert.equal('<div><p><code>\'$example$\'</code> abcd</p></div>\n', html);
466
+ render(dirname + '/index.hbs', locals, function (err, html) {
467
+ assert.equal("<div><p><code>'$example$'</code> abcd</p></div>\n", html);
454
468
  done();
455
469
  });
456
470
  });
457
471
  });
458
472
 
459
- describe('issue-153', function() {
473
+ describe('issue-153', function () {
460
474
  var dirname = path.join(__dirname, 'issues/153');
461
- it('should concat contentFor blocks with newline', function(done) {
475
+ it('should concat contentFor blocks with newline', function (done) {
462
476
  var check = function (err, html) {
463
477
  if (err) {
464
478
  done(err);
465
479
  }
466
480
  assert.equal('1\n2', html.trim());
467
481
  done();
468
- }
469
- var hb = hbs.create()
482
+ };
483
+ var hb = hbs.create();
470
484
  var render = hb.express3({
471
- restrictLayoutsTo: dirname
485
+ restrictLayoutsTo: dirname,
472
486
  });
473
- var locals = H.createLocals('express3', dirname, { });
487
+ var locals = H.createLocals('express3', dirname, {});
474
488
  render(dirname + '/index.hbs', locals, check);
475
489
  });
476
490
  });