Skip to content

Commit e37b3e5

Browse files
dnwhtebmuenzenmeyer
authored andcommitted
Add some try catch blocks
1 parent 8f33cd3 commit e37b3e5

1 file changed

Lines changed: 31 additions & 17 deletions

File tree

packages/patternengine-node-nunjucks/lib/engine_nunjucks.js

Lines changed: 31 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,6 @@
22
TODO
33
- Make sure regex match Nunjucks features and syntax
44
- Look into if we need to handle partials in the render method
5-
- Add try catch blocks to prevent Pl from crashing
65
- Test methods of including files
76
- Compare features and syntax with the mustache version so we can document
87
- Document and submit to PatternLab
@@ -61,11 +60,16 @@ var engine_nunjucks = {
6160

6261
// render it
6362
renderPattern: function renderPattern(pattern, data) {
64-
// replace pattern names with their full path so Nunjucks can find them.
65-
pattern.extendedTemplate = this.replacePartials(pattern);
66-
var result = nunjucks.renderString(pattern.extendedTemplate, data);
67-
// var result = nunjucks.compile(pattern.extendedTemplate, env).render(data);
68-
return result;
63+
try {
64+
// replace pattern names with their full path so Nunjucks can find them.
65+
pattern.extendedTemplate = this.replacePartials(pattern);
66+
var result = nunjucks.renderString(pattern.extendedTemplate, data);
67+
// var result = nunjucks.compile(pattern.extendedTemplate, env).render(data);
68+
return result;
69+
}
70+
catch (err) {
71+
console.error('Failed to render pattern: ' + pattern.name);
72+
}
6973
},
7074

7175
// find and return any Nunjucks style includes/imports/extends within pattern
@@ -85,9 +89,14 @@ var engine_nunjucks = {
8589

8690
// given a pattern, and a partial string, tease out the "pattern key" and return it.
8791
findPartial: function (partialString) {
88-
var partial = partialString.match(this.findPartialKeyRE)[1];
89-
partial = partial.replace(/["']/g, '');
90-
return partial;
92+
try {
93+
var partial = partialString.match(this.findPartialKeyRE)[1];
94+
partial = partial.replace(/["']/g, '');
95+
return partial;
96+
}
97+
catch (err) {
98+
console.error('Error occured when trying to find partial name in: ' + partialString);
99+
}
91100
},
92101

93102
// keep track of partials and their paths so we can replace the name with the path
@@ -99,16 +108,21 @@ var engine_nunjucks = {
99108
},
100109

101110
replacePartials: function (pattern) {
102-
var partials = this.findPartials(pattern);
103-
if (partials !== null) {
104-
for (var i = 0; i < partials.length; i++) { // e.g. {% include "atoms-parent" %}
105-
var partialName = this.findPartial(partials[i]); // e.g. atoms-parent
106-
var partialFullPath = partialRegistry[partialName]; // e.g. 00-atoms/01-parent.njk
107-
var newPartial = partials[i].replaceAll(partialName, partialFullPath, true); // e.g. {% include "00-atoms/01-parent.njk" %}
108-
pattern.extendedTemplate = pattern.extendedTemplate.replaceAll(partials[i], newPartial, true);
111+
try {
112+
var partials = this.findPartials(pattern);
113+
if (partials !== null) {
114+
for (var i = 0; i < partials.length; i++) { // e.g. {% include "atoms-parent" %}
115+
var partialName = this.findPartial(partials[i]); // e.g. atoms-parent
116+
var partialFullPath = partialRegistry[partialName]; // e.g. 00-atoms/01-parent.njk
117+
var newPartial = partials[i].replaceAll(partialName, partialFullPath, true); // e.g. {% include "00-atoms/01-parent.njk" %}
118+
pattern.extendedTemplate = pattern.extendedTemplate.replaceAll(partials[i], newPartial, true);
119+
}
109120
}
121+
return pattern.extendedTemplate;
122+
}
123+
catch (err) {
124+
console.error('Error occurred in replacing partial names with paths for patern: ' + pattern.name);
110125
}
111-
return pattern.extendedTemplate;
112126
},
113127

114128
// handled by nunjucks. This is error to keep PL from erroring

0 commit comments

Comments
 (0)