express-hbs 2.5.0 → 4.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/LICENSE +1 -1
- package/README.md +50 -22
- package/lib/hbs.js +89 -91
- package/lib/resolver.js +10 -9
- package/package.json +32 -21
- package/.editorconfig +0 -8
- package/.eslintrc +0 -42
- package/.github/workflows/test.yml +0 -24
- package/.jsbeautifyrc +0 -17
- package/SECURITY.md +0 -9
- package/example/app-layoutsDir.js +0 -106
- package/example/app.js +0 -110
- package/example/public/css/style.css +0 -17
- package/example/views/fruits/details-layoutsDir.hbs +0 -3
- package/example/views/fruits/details.hbs +0 -4
- package/example/views/fruits/index-layoutsDir.hbs +0 -20
- package/example/views/fruits/index.hbs +0 -20
- package/example/views/index.hbs +0 -34
- package/example/views/layout/default.hbs +0 -13
- package/example/views/layout/fruit-details.hbs +0 -9
- package/example/views/layout/fruits.hbs +0 -6
- package/example/views/layout/html-struct.hbs +0 -21
- package/example/views/layout/veggie-details.hbs +0 -9
- package/example/views/layout/veggie.hbs +0 -6
- package/example/views/partials/scripts.hbs +0 -5
- package/example/views/partials/sub/comment.hbs +0 -1
- package/example/views/partials-other/other.hbs +0 -1
- package/example/views/replace.hbs +0 -6
- package/example/views/tos.txt +0 -3
- package/example/views/veggies/details.hbs +0 -1
- package/example/views/veggies.hbs +0 -17
- package/renovate.json +0 -6
- package/test/apps/async/index.js +0 -127
- package/test/apps/async/views/failer.hbs +0 -4
- package/test/apps/async/views/index.hbs +0 -16
- package/test/apps/async/views/layout.hbs +0 -1
- package/test/apps/i18n/index.js +0 -55
- package/test/apps/i18n/locales/en.json +0 -8
- package/test/apps/i18n/locales/fr.json +0 -8
- package/test/apps/i18n/views/index.hbs +0 -3
- package/test/asyncSpecs.js +0 -69
- package/test/cacheSpecs.js +0 -138
- package/test/customExtension.js +0 -36
- package/test/handlebarsSpecs.js +0 -95
- package/test/helperSpecs.js +0 -56
- package/test/helpers.js +0 -24
- package/test/i18nSpecs.js +0 -34
- package/test/issues/144/index.hbs +0 -1
- package/test/issues/153/index.hbs +0 -3
- package/test/issues/21/views/index.hbs +0 -1
- package/test/issues/21/views/layouts/default.hbs +0 -1
- package/test/issues/21/views/layouts/sub/child.hbs +0 -1
- package/test/issues/21/views/sub/relativeLayout.hbs +0 -1
- package/test/issues/21/views/sub/sub.hbs +0 -1
- package/test/issues/21/views/useLayoutInDir.hbs +0 -1
- package/test/issues/22/layout1.hbs +0 -1
- package/test/issues/22/layout2.hbs +0 -1
- package/test/issues/22/template.hbs +0 -1
- package/test/issues/23/empty.hbs +0 -0
- package/test/issues/23/emptyComment.hbs +0 -1
- package/test/issues/23/emptyPartial.hbs +0 -1
- package/test/issues/23/index.hbs +0 -4
- package/test/issues/23/layout.hbs +0 -1
- package/test/issues/23/partials/custom/comment-only.hbs +0 -1
- package/test/issues/23/partials/custom/empty.hbs +0 -0
- package/test/issues/23/partials/hello.hbs +0 -1
- package/test/issues/49/error.hbs +0 -1
- package/test/issues/49/front/error.hbs +0 -1
- package/test/issues/49/index.hbs +0 -2
- package/test/issues/49/layouts/default.hbs +0 -1
- package/test/issues/49/partial.hbs +0 -1
- package/test/issues/49/partials/partial-error.hbs +0 -1
- package/test/issues/53/default.hbs +0 -15
- package/test/issues/53/index.hbs +0 -7
- package/test/issues/53/partials/.gitkeep +0 -0
- package/test/issues/59/index.hbs +0 -2
- package/test/issues/62/basic.hbs +0 -2
- package/test/issues/62/block.hbs +0 -11
- package/test/issues/73/index.hbs +0 -5
- package/test/issues/73/partials/partial.hbs +0 -6
- package/test/issues/76/mypartial.hbs +0 -0
- package/test/issues/84/index.hbs +0 -1
- package/test/issues/84/partials/abc/def/ghi/test.hbs +0 -1
- package/test/issues.js +0 -476
- package/test/layoutSpecs.js +0 -118
- package/test/localTemplateOptions/data-access-template.hbs +0 -1
- package/test/localTemplateOptions/template.hbs +0 -1
- package/test/localTemplateOptions.js +0 -127
- package/test/multiple.js +0 -119
- package/test/nonExpress.js +0 -37
- package/test/optionsSpecs.js +0 -24
- package/test/views/beautify/expected.hbs +0 -9
- package/test/views/beautify/index.hbs +0 -2
- package/test/views/customExtension/layout.server.view.html +0 -1
- package/test/views/customExtension/partialsDir/partial1.server.view.html +0 -1
- package/test/views/customExtension/partialsDir/partial2.server.view.html +0 -1
- package/test/views/customExtension/partialsDir/subs/subPartial1.server.view.html +0 -1
- package/test/views/customExtension/partialsDir/subs/subPartial2.server.view.html +0 -1
- package/test/views/customExtension/template.server.view.html +0 -5
- package/test/views/disableLayoutDirective/aside.hbs +0 -1
- package/test/views/disableLayoutDirective/index.hbs +0 -2
- package/test/views/disableLayoutDirective/layouts/default.hbs +0 -1
- package/test/views/helpers/home/async.hbs +0 -6
- package/test/views/helpers/home/index.hbs +0 -3
- package/test/views/helpers/layouts/default.hbs +0 -1
- package/test/views/multiple/views1/collide.hbs +0 -1
- package/test/views/multiple/views1/error.hbs +0 -1
- package/test/views/multiple/views1/test1.hbs +0 -1
- package/test/views/multiple/views2/collide.hbs +0 -1
- package/test/views/multiple/views2/error.hbs +0 -1
- package/test/views/multiple/views2/test2.hbs +0 -1
- package/test/views/viewsDir/layouts/default.hbs +0 -1
- package/test/views/viewsDir/sub/directive.hbs +0 -2
- package/test/views/viewsDir/sub/lay.hbs +0 -1
|
@@ -1 +0,0 @@
|
|
|
1
|
-
index
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
<html>{{{body}}}</html>
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
<sub>{{{body}}}</sub>
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
<relative>{{{body}}}</relative>
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
sub
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
useLayoutInDir
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
<layout1>{{{body}}}</layout1>
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
<layout2>{{{body}}}</layout2>
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
template
|
package/test/issues/23/empty.hbs
DELETED
|
File without changes
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
foo{{> emptyComment}}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
foo{{> emptyPartial}}
|
package/test/issues/23/index.hbs
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
<html>{{{body}}}</html>
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{{! comment }}
|
|
File without changes
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
Hello
|
package/test/issues/49/error.hbs
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{{{http://google.co.uk}}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{{{http://google.co.uk}}
|
package/test/issues/49/index.hbs
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
<layout>{{{body}}</layout>
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{{> partial-error}}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{{{body}}
|
package/test/issues/53/index.hbs
DELETED
|
File without changes
|
package/test/issues/59/index.hbs
DELETED
package/test/issues/62/basic.hbs
DELETED
package/test/issues/62/block.hbs
DELETED
package/test/issues/73/index.hbs
DELETED
|
File without changes
|
package/test/issues/84/index.hbs
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
<div>{{> abc/def/ghi/test}}</div>
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
Testing 3 levels down
|
package/test/issues.js
DELETED
|
@@ -1,476 +0,0 @@
|
|
|
1
|
-
'use strict';
|
|
2
|
-
var assert = require('assert');
|
|
3
|
-
var hbs = require('..');
|
|
4
|
-
var path = require('path');
|
|
5
|
-
var H = require('./helpers');
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
describe('issue-22 template', function() {
|
|
9
|
-
var dirname = path.join(__dirname, 'issues/22');
|
|
10
|
-
|
|
11
|
-
it('should use multiple layouts with caching', function(done) {
|
|
12
|
-
var render = hbs.create().express3({
|
|
13
|
-
restrictLayoutsTo: dirname
|
|
14
|
-
});
|
|
15
|
-
var locals1 = H.createLocals('express3', dirname, { layout: 'layout1', cache: true });
|
|
16
|
-
var locals2 = H.createLocals('express3', dirname, { layout: 'layout2', cache: true });
|
|
17
|
-
|
|
18
|
-
render(dirname + '/template.hbs', locals1, function(err, html) {
|
|
19
|
-
assert.ifError(err);
|
|
20
|
-
assert.equal('<layout1>template</layout1>', H.stripWs(html));
|
|
21
|
-
render(dirname + '/template.hbs', locals2, function(err, html) {
|
|
22
|
-
assert.ifError(err);
|
|
23
|
-
assert.equal('<layout2>template</layout2>', H.stripWs(html));
|
|
24
|
-
done();
|
|
25
|
-
});
|
|
26
|
-
});
|
|
27
|
-
});
|
|
28
|
-
});
|
|
29
|
-
|
|
30
|
-
describe('issue-23', function() {
|
|
31
|
-
var dirname = path.join(__dirname, 'issues/23');
|
|
32
|
-
|
|
33
|
-
it('should not pass an empty or missing partial to handlebars', function(done) {
|
|
34
|
-
var render = hbs.create().express3({
|
|
35
|
-
partialsDir: [dirname + '/partials'],
|
|
36
|
-
restrictLayoutsTo: dirname
|
|
37
|
-
});
|
|
38
|
-
|
|
39
|
-
function check(err, html) {
|
|
40
|
-
assert.ifError(err);
|
|
41
|
-
assert.equal('<html>Hello</html>', H.stripWs(html));
|
|
42
|
-
done();
|
|
43
|
-
}
|
|
44
|
-
var result = render(dirname + '/index.hbs', {cache: true, settings: {views: dirname + '/views'}}, check);
|
|
45
|
-
});
|
|
46
|
-
|
|
47
|
-
it('should handle empty string', function(done) {
|
|
48
|
-
var render = hbs.create().express3({
|
|
49
|
-
partialsDir: [dirname + '/partials'],
|
|
50
|
-
restrictLayoutsTo: dirname
|
|
51
|
-
});
|
|
52
|
-
|
|
53
|
-
function check(err, html) {
|
|
54
|
-
assert.ifError(err);
|
|
55
|
-
assert.equal('', H.stripWs(html));
|
|
56
|
-
done();
|
|
57
|
-
}
|
|
58
|
-
var result = render(dirname + '/empty.hbs', {cache: true, settings: {views: dirname + '/views'}}, check);
|
|
59
|
-
});
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
it('should register empty partial', function(done) {
|
|
63
|
-
var hb = hbs.create();
|
|
64
|
-
var render = hb.express3({
|
|
65
|
-
partialsDir: [dirname + '/partials'],
|
|
66
|
-
restrictLayoutsTo: dirname
|
|
67
|
-
});
|
|
68
|
-
hb.handlebars.registerPartial('emptyPartial', '');
|
|
69
|
-
|
|
70
|
-
var pass = 0;
|
|
71
|
-
function check(err, html) {
|
|
72
|
-
pass++;
|
|
73
|
-
assert.ifError(err);
|
|
74
|
-
assert.equal('foo', H.stripWs(html));
|
|
75
|
-
if (pass < 3) {
|
|
76
|
-
doIt();
|
|
77
|
-
} else {
|
|
78
|
-
done();
|
|
79
|
-
}
|
|
80
|
-
}
|
|
81
|
-
function doIt() {
|
|
82
|
-
render(dirname + '/emptyPartial.hbs', {cache: true, settings: {views: dirname + '/views'}}, check);
|
|
83
|
-
}
|
|
84
|
-
doIt();
|
|
85
|
-
});
|
|
86
|
-
|
|
87
|
-
it('should register partial that results in empty string (comment)', function(done) {
|
|
88
|
-
var hb = hbs.create();
|
|
89
|
-
var render = hb.express3({
|
|
90
|
-
partialsDir: [dirname + '/partials'],
|
|
91
|
-
restrictLayoutsTo: dirname
|
|
92
|
-
});
|
|
93
|
-
// this fails
|
|
94
|
-
//hb.handlebars.registerPartial('emptyComment', '{{! just a comment}}');
|
|
95
|
-
hb.registerPartial('emptyComment', '{{! just a comment}}');
|
|
96
|
-
|
|
97
|
-
var pass = 0;
|
|
98
|
-
function check(err, html) {
|
|
99
|
-
pass++;
|
|
100
|
-
assert.ifError(err);
|
|
101
|
-
assert.equal('foo', H.stripWs(html));
|
|
102
|
-
if (pass < 3) {
|
|
103
|
-
doIt();
|
|
104
|
-
} else {
|
|
105
|
-
done();
|
|
106
|
-
}
|
|
107
|
-
}
|
|
108
|
-
function doIt() {
|
|
109
|
-
render(dirname + '/emptyComment.hbs', {cache: true, settings: {views: dirname + '/views'}}, check);
|
|
110
|
-
}
|
|
111
|
-
doIt();
|
|
112
|
-
});
|
|
113
|
-
});
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
describe('issue-21', function() {
|
|
117
|
-
var dirname = path.join(__dirname, 'issues/21');
|
|
118
|
-
var render = hbs.create().express3({
|
|
119
|
-
layoutsDir: dirname + '/views/layouts',
|
|
120
|
-
restrictLayoutsTo: dirname
|
|
121
|
-
});
|
|
122
|
-
|
|
123
|
-
it('should allow specifying layouts without the parent dir', function(done) {
|
|
124
|
-
function check(err, html) {
|
|
125
|
-
assert.ifError(err);
|
|
126
|
-
assert.equal('<html>index</html>', H.stripWs(html));
|
|
127
|
-
done();
|
|
128
|
-
}
|
|
129
|
-
|
|
130
|
-
var options = {cache: true, layout: 'default', settings: {views: dirname + '/views'}};
|
|
131
|
-
var result = render(dirname + '/views/index.hbs', options, check);
|
|
132
|
-
});
|
|
133
|
-
|
|
134
|
-
|
|
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);
|
|
143
|
-
});
|
|
144
|
-
|
|
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
|
-
}
|
|
150
|
-
|
|
151
|
-
var options = {cache: true, layout: './relativeLayout', settings: {views: dirname + '/views'}};
|
|
152
|
-
var result = render(dirname + '/views/sub/sub.hbs', options, check);
|
|
153
|
-
});
|
|
154
|
-
|
|
155
|
-
it('should allow layouts in subfolders', function(done) {
|
|
156
|
-
function check(err, html) {
|
|
157
|
-
assert.ifError(err);
|
|
158
|
-
assert.equal('<sub>useLayoutInDir</sub>', H.stripWs(html));
|
|
159
|
-
done();
|
|
160
|
-
}
|
|
161
|
-
|
|
162
|
-
var options = {cache: true, layout: 'sub/child', settings: {views: dirname + '/views'}};
|
|
163
|
-
var result = render(dirname + '/views/useLayoutInDir.hbs', options, check);
|
|
164
|
-
});
|
|
165
|
-
|
|
166
|
-
it('should treat layouts relative to views directory if layoutsDir is not passed', function(done) {
|
|
167
|
-
var dirname = path.join(__dirname, 'issues/21');
|
|
168
|
-
var render = hbs.create().express3({
|
|
169
|
-
restrictLayoutsTo: dirname
|
|
170
|
-
});
|
|
171
|
-
|
|
172
|
-
function check(err, html) {
|
|
173
|
-
assert.ifError(err);
|
|
174
|
-
assert.equal('<sub>sub</sub>', H.stripWs(html));
|
|
175
|
-
done();
|
|
176
|
-
}
|
|
177
|
-
|
|
178
|
-
var options = {cache: true, layout: 'layouts/sub/child', settings: {views: dirname + '/views'}};
|
|
179
|
-
var result = render(dirname + '/views/sub/sub.hbs', options, check);
|
|
180
|
-
});
|
|
181
|
-
});
|
|
182
|
-
|
|
183
|
-
|
|
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()
|
|
189
|
-
var render = hb.express3({
|
|
190
|
-
restrictLayoutsTo: dirname
|
|
191
|
-
});
|
|
192
|
-
var locals = H.createLocals('express3', dirname, {});
|
|
193
|
-
render(dirname + '/error.hbs', locals, function(err, html) {
|
|
194
|
-
assert(err.stack.indexOf('[error.hbs]') > 0);
|
|
195
|
-
done();
|
|
196
|
-
});
|
|
197
|
-
});
|
|
198
|
-
|
|
199
|
-
it('should report relative filename with error', function(done) {
|
|
200
|
-
var hb = hbs.create()
|
|
201
|
-
var render = hb.express3({
|
|
202
|
-
restrictLayoutsTo: dirname
|
|
203
|
-
});
|
|
204
|
-
var locals = H.createLocals('express3', dirname, {});
|
|
205
|
-
render(dirname + '/front/error.hbs', locals, function(err, html) {
|
|
206
|
-
assert(err.stack.indexOf('[front/error.hbs]') > 0);
|
|
207
|
-
done();
|
|
208
|
-
});
|
|
209
|
-
});
|
|
210
|
-
|
|
211
|
-
it('should report filename with partial error', function(done) {
|
|
212
|
-
var hb = hbs.create()
|
|
213
|
-
var render = hb.express3({
|
|
214
|
-
partialsDir: dirname + '/partials',
|
|
215
|
-
restrictLayoutsTo: dirname
|
|
216
|
-
});
|
|
217
|
-
var locals = H.createLocals('express3', dirname, {});
|
|
218
|
-
render(dirname + '/partial.hbs', locals, function(err, html) {
|
|
219
|
-
assert(err.stack.indexOf('[partial.hbs]') > 0);
|
|
220
|
-
done();
|
|
221
|
-
});
|
|
222
|
-
});
|
|
223
|
-
|
|
224
|
-
it('should report filename with layout error', function(done) {
|
|
225
|
-
var hb = hbs.create()
|
|
226
|
-
var render = hb.express3({
|
|
227
|
-
partialsDir: dirname + '/partials',
|
|
228
|
-
restrictLayoutsTo: dirname
|
|
229
|
-
});
|
|
230
|
-
var locals = H.createLocals('express3', dirname, {});
|
|
231
|
-
render(dirname + '/index.hbs', locals, function(err, html) {
|
|
232
|
-
assert(err.stack.indexOf('[layouts/default.hbs]') > 0);
|
|
233
|
-
done();
|
|
234
|
-
});
|
|
235
|
-
});
|
|
236
|
-
});
|
|
237
|
-
|
|
238
|
-
describe('issue-53', function() {
|
|
239
|
-
var dirname = path.join(__dirname, 'issues/53');
|
|
240
|
-
|
|
241
|
-
it('should use block with async helpers', function(done) {
|
|
242
|
-
var hb = hbs.create()
|
|
243
|
-
var res = 0;
|
|
244
|
-
hb.registerAsyncHelper('weird', function(_, resultcb) {
|
|
245
|
-
setTimeout(function() {
|
|
246
|
-
resultcb(++res);
|
|
247
|
-
}, 1)
|
|
248
|
-
});
|
|
249
|
-
var render = hb.express3({
|
|
250
|
-
restrictLayoutsTo: dirname
|
|
251
|
-
});
|
|
252
|
-
var locals = H.createLocals('express3', dirname, {});
|
|
253
|
-
render(dirname + '/index.hbs', locals, function(err, html) {
|
|
254
|
-
assert.ifError(err);
|
|
255
|
-
assert.ok(html.indexOf('__aSyNcId_') < 0);
|
|
256
|
-
done();
|
|
257
|
-
});
|
|
258
|
-
});
|
|
259
|
-
});
|
|
260
|
-
|
|
261
|
-
describe('issue-59', function() {
|
|
262
|
-
var dirname = __dirname + '/issues/59';
|
|
263
|
-
it('should escape or not', function (done) {
|
|
264
|
-
var hb = hbs.create();
|
|
265
|
-
|
|
266
|
-
function async(s, cb) {
|
|
267
|
-
cb('<strong>' + s + '</strong>');
|
|
268
|
-
}
|
|
269
|
-
|
|
270
|
-
hb.registerAsyncHelper("async", async);
|
|
271
|
-
|
|
272
|
-
var render = hb.express3({
|
|
273
|
-
viewsDir: dirname,
|
|
274
|
-
restrictLayoutsTo: dirname
|
|
275
|
-
});
|
|
276
|
-
var locals = H.createLocals('express3', dirname);
|
|
277
|
-
|
|
278
|
-
render(dirname + '/index.hbs', locals, function (err, html) {
|
|
279
|
-
assert.equal(H.stripWs(html), '<strong>foo</strong><strong>foo</strong>');
|
|
280
|
-
done();
|
|
281
|
-
});
|
|
282
|
-
});
|
|
283
|
-
it('should not escape SafeString', function (done) {
|
|
284
|
-
var hb = hbs.create();
|
|
285
|
-
|
|
286
|
-
function async(s, cb) {
|
|
287
|
-
cb(new hb.SafeString('<em>' + s + '</em>'));
|
|
288
|
-
}
|
|
289
|
-
|
|
290
|
-
hb.registerAsyncHelper('async', async);
|
|
291
|
-
|
|
292
|
-
var render = hb.express3({
|
|
293
|
-
viewsDir: dirname,
|
|
294
|
-
restrictLayoutsTo: dirname
|
|
295
|
-
});
|
|
296
|
-
var locals = H.createLocals('express3', dirname);
|
|
297
|
-
|
|
298
|
-
render(dirname + '/index.hbs', locals, function (err, html) {
|
|
299
|
-
assert.equal(H.stripWs(html), '<em>foo</em><em>foo</em>');
|
|
300
|
-
done();
|
|
301
|
-
});
|
|
302
|
-
});
|
|
303
|
-
});
|
|
304
|
-
|
|
305
|
-
describe('issue-73', function() {
|
|
306
|
-
var dirname = path.join(__dirname, 'issues/73');
|
|
307
|
-
it('should allow compile options', function(done){
|
|
308
|
-
var hb = hbs.create();
|
|
309
|
-
var render = hb.express3({
|
|
310
|
-
viewsDir: dirname,
|
|
311
|
-
partialsDir: dirname + '/partials',
|
|
312
|
-
restrictLayoutsTo: dirname,
|
|
313
|
-
onCompile: function(eh, source, filename) {
|
|
314
|
-
var options;
|
|
315
|
-
if (filename && filename.indexOf('partials')) {
|
|
316
|
-
options = {preventIndent: true};
|
|
317
|
-
}
|
|
318
|
-
return eh.handlebars.compile(source, options);
|
|
319
|
-
}
|
|
320
|
-
});
|
|
321
|
-
|
|
322
|
-
var locals = H.createLocals('express3', dirname);
|
|
323
|
-
render(dirname + '/index.hbs', locals, function (err, html) {
|
|
324
|
-
if (err) return console.log('error', err);
|
|
325
|
-
|
|
326
|
-
assert.ifError(err);
|
|
327
|
-
assert.ok(html.match(/^Hello/m));
|
|
328
|
-
assert.ok(html.match(/^second line/m));
|
|
329
|
-
done();
|
|
330
|
-
});
|
|
331
|
-
});
|
|
332
|
-
});
|
|
333
|
-
|
|
334
|
-
|
|
335
|
-
describe('issue-62', function() {
|
|
336
|
-
var dirname = path.join(__dirname, 'issues/62');
|
|
337
|
-
|
|
338
|
-
it('should provide options for async helpers', function (done) {
|
|
339
|
-
var hb = hbs.create();
|
|
340
|
-
|
|
341
|
-
function async(c, o, cb) {
|
|
342
|
-
if (o.hash.type === 'em') {
|
|
343
|
-
cb('<em>' + c + '</em>');
|
|
344
|
-
} else {
|
|
345
|
-
cb('<strong>' + c + '</strong>');
|
|
346
|
-
}
|
|
347
|
-
}
|
|
348
|
-
|
|
349
|
-
hb.registerAsyncHelper("async", async);
|
|
350
|
-
|
|
351
|
-
var render = hb.express3({
|
|
352
|
-
viewsDir: dirname,
|
|
353
|
-
restrictLayoutsTo: dirname
|
|
354
|
-
});
|
|
355
|
-
var locals = H.createLocals('express3', dirname);
|
|
356
|
-
|
|
357
|
-
render(dirname + '/basic.hbs', locals, function (err, html) {
|
|
358
|
-
assert.equal(
|
|
359
|
-
H.stripWs(html),
|
|
360
|
-
'<strong>foo</strong><em>foo</em>'
|
|
361
|
-
);
|
|
362
|
-
done();
|
|
363
|
-
});
|
|
364
|
-
});
|
|
365
|
-
|
|
366
|
-
it('should allow for block async helpers', function (done) {
|
|
367
|
-
var hb = hbs.create();
|
|
368
|
-
|
|
369
|
-
function async(c, o, cb) {
|
|
370
|
-
var self = this;
|
|
371
|
-
self.output = c;
|
|
372
|
-
|
|
373
|
-
if (o.hash.inverse === 'true') {
|
|
374
|
-
cb(o.inverse(self));
|
|
375
|
-
} else {
|
|
376
|
-
cb(o.fn(self));
|
|
377
|
-
}
|
|
378
|
-
}
|
|
379
|
-
|
|
380
|
-
hb.registerAsyncHelper("async", async);
|
|
381
|
-
|
|
382
|
-
var render = hb.express3({
|
|
383
|
-
viewsDir: dirname,
|
|
384
|
-
restrictLayoutsTo: dirname
|
|
385
|
-
});
|
|
386
|
-
var locals = H.createLocals('express3', dirname);
|
|
387
|
-
|
|
388
|
-
render(dirname + '/block.hbs', locals, function (err, html) {
|
|
389
|
-
assert.equal(
|
|
390
|
-
H.stripWs(html),
|
|
391
|
-
'<p>GoodbyeWorld</p><p>HelloHandlebars</p>'
|
|
392
|
-
);
|
|
393
|
-
done();
|
|
394
|
-
});
|
|
395
|
-
});
|
|
396
|
-
});
|
|
397
|
-
|
|
398
|
-
describe('issue-76', function() {
|
|
399
|
-
var dirname = path.join(__dirname, 'issues/76');
|
|
400
|
-
|
|
401
|
-
it('should allow cachePartials to be called independently of render', function (done) {
|
|
402
|
-
var hb = hbs.create();
|
|
403
|
-
|
|
404
|
-
var render = hb.express3({
|
|
405
|
-
partialsDir: dirname,
|
|
406
|
-
restrictLayoutsTo: dirname
|
|
407
|
-
});
|
|
408
|
-
|
|
409
|
-
hb.cachePartials(function (err) {
|
|
410
|
-
assert.ifError(err);
|
|
411
|
-
assert.ok(true);
|
|
412
|
-
done();
|
|
413
|
-
});
|
|
414
|
-
});
|
|
415
|
-
});
|
|
416
|
-
|
|
417
|
-
describe('issue-84', function () {
|
|
418
|
-
var dirname = path.join(__dirname, 'issues/84');
|
|
419
|
-
|
|
420
|
-
it('should render deeply nested partials', function (done) {
|
|
421
|
-
var render = hbs.create().express3({
|
|
422
|
-
partialsDir: [dirname + '/partials'],
|
|
423
|
-
restrictLayoutsTo: dirname
|
|
424
|
-
});
|
|
425
|
-
|
|
426
|
-
function check(err, html) {
|
|
427
|
-
if (err) {
|
|
428
|
-
done(err);
|
|
429
|
-
}
|
|
430
|
-
assert.equal('<div>Testing3levelsdown</div>', H.stripWs(html));
|
|
431
|
-
done();
|
|
432
|
-
}
|
|
433
|
-
|
|
434
|
-
render(dirname + '/index.hbs', {cache: true, settings: {views: dirname + '/views'}}, check);
|
|
435
|
-
});
|
|
436
|
-
});
|
|
437
|
-
|
|
438
|
-
describe('issue-144', function() {
|
|
439
|
-
var dirname = path.join(__dirname, 'issues/144');
|
|
440
|
-
|
|
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)
|
|
447
|
-
});
|
|
448
|
-
var render = hb.express3({
|
|
449
|
-
restrictLayoutsTo: dirname
|
|
450
|
-
});
|
|
451
|
-
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);
|
|
454
|
-
done();
|
|
455
|
-
});
|
|
456
|
-
});
|
|
457
|
-
});
|
|
458
|
-
|
|
459
|
-
describe('issue-153', function() {
|
|
460
|
-
var dirname = path.join(__dirname, 'issues/153');
|
|
461
|
-
it('should concat contentFor blocks with newline', function(done) {
|
|
462
|
-
var check = function (err, html) {
|
|
463
|
-
if (err) {
|
|
464
|
-
done(err);
|
|
465
|
-
}
|
|
466
|
-
assert.equal('1\n2', html.trim());
|
|
467
|
-
done();
|
|
468
|
-
}
|
|
469
|
-
var hb = hbs.create()
|
|
470
|
-
var render = hb.express3({
|
|
471
|
-
restrictLayoutsTo: dirname
|
|
472
|
-
});
|
|
473
|
-
var locals = H.createLocals('express3', dirname, { });
|
|
474
|
-
render(dirname + '/index.hbs', locals, check);
|
|
475
|
-
});
|
|
476
|
-
});
|