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/.github/workflows/publish.yml +73 -0
- package/.github/workflows/test.yml +32 -8
- package/.nvmrc +1 -0
- package/.nycrc.json +16 -0
- package/.oxfmtrc.json +19 -0
- package/.oxlintrc.json +32 -0
- package/AGENTS.md +40 -0
- package/LICENSE +1 -1
- package/README.md +50 -22
- package/example/app-layoutsDir.js +32 -39
- package/example/app.js +27 -34
- package/lib/hbs.js +82 -90
- package/lib/resolver.js +10 -9
- package/package.json +29 -22
- package/renovate.json +9 -2
- package/test/apps/async/index.js +54 -42
- package/test/apps/i18n/index.js +9 -7
- package/test/asyncSpecs.js +12 -12
- package/test/cacheSpecs.js +18 -21
- package/test/customExtension.js +15 -16
- package/test/handlebarsSpecs.js +16 -19
- package/test/helperSpecs.js +22 -20
- package/test/helpers.js +3 -3
- package/test/i18nSpecs.js +10 -8
- package/test/issues.js +136 -122
- package/test/layoutSpecs.js +23 -25
- package/test/localTemplateOptions.js +40 -42
- package/test/multiple.js +30 -34
- package/test/nonExpress.js +9 -10
- package/test/optionsSpecs.js +5 -7
- package/test/resolverSpecs.js +54 -0
- package/.eslintrc +0 -42
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 =
|
|
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 =
|
|
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 =
|
|
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(
|
|
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(
|
|
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(
|
|
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(
|
|
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
|
-
|
|
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
|
-
|
|
136
|
-
|
|
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) {
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
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
|
-
|
|
152
|
-
|
|
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 =
|
|
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 = {
|
|
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
|
-
|
|
185
|
-
|
|
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 =
|
|
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(
|
|
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(
|
|
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
|
-
'<strong>foo</strong><em>foo</em>'
|
|
361
|
-
);
|
|
378
|
+
assert.equal(H.stripWs(html), '<strong>foo</strong><em>foo</em>');
|
|
362
379
|
done();
|
|
363
380
|
});
|
|
364
381
|
});
|
|
@@ -377,33 +394,30 @@ describe('issue-62', function() {
|
|
|
377
394
|
}
|
|
378
395
|
}
|
|
379
396
|
|
|
380
|
-
hb.registerAsyncHelper(
|
|
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 =
|
|
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 =
|
|
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 =
|
|
452
|
+
describe('issue-144', function () {
|
|
453
|
+
var dirname = path.join(__dirname, 'issues/144');
|
|
440
454
|
|
|
441
|
-
it(
|
|
442
|
-
var hb = hbs.create()
|
|
443
|
-
hb.registerAsyncHelper('special_string', function(_, resultcb) {
|
|
444
|
-
setTimeout(function() {
|
|
445
|
-
resultcb(new hbs.SafeString(
|
|
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(
|
|
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
|
});
|