Skip to content

Commit 5c9e9ce

Browse files
Throw errors, enable JSX, allows arrow functions in structures
Co-authored-by: Mariel Frank <[email protected]>
1 parent cd3aba2 commit 5c9e9ce

File tree

1 file changed

+9
-9
lines changed

1 file changed

+9
-9
lines changed

structured.js

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@
2929
}
3030

3131
if (!esprima || !_) {
32-
throw "Error: Both Esprima and UnderscoreJS are required dependencies.";
32+
throw new Error("Error: Both Esprima and UnderscoreJS are required dependencies.");
3333
}
3434

3535
/*
@@ -257,7 +257,7 @@
257257
cachedCodeTree :
258258
typeof code === "object" ?
259259
deepClone(code) :
260-
esprima.parse(code));
260+
esprima.parse(code, { jsx: true }));
261261

262262
cachedCode = code;
263263
cachedCodeTree = codeTree;
@@ -440,11 +440,11 @@
440440
}
441441

442442
// Wrapped in parentheses so function() {} becomes valid Javascript.
443-
var fullTree = esprima.parse("(" + structure + ")");
443+
var fullTree = esprima.parse("(" + structure + ")", { jsx: true });
444444

445-
if (fullTree.body[0].expression.type !== "FunctionExpression" ||
445+
if ((fullTree.body[0].expression.type !== "FunctionExpression" && fullTree.body[0].expression.type !== "ArrowFunctionExpression") ||
446446
!fullTree.body[0].expression.body) {
447-
throw "Poorly formatted structure code";
447+
throw new Error("Poorly formatted structure code");
448448
}
449449

450450
var tree = fullTree.body[0].expression.body;
@@ -965,15 +965,15 @@
965965

966966
if (node.name === "_") {
967967
if (!data._ || data._.length === 0) {
968-
throw "No _ data available.";
968+
throw new Error("No _ data available.");
969969
}
970970

971971
return data._.shift();
972972
} else if (node.name && node.name.indexOf("$") === 0) {
973973
var name = node.name.slice(1);
974974

975975
if (!data.vars || !(name in data.vars)) {
976-
throw "No vars available.";
976+
throw new Error("No vars available.");
977977
}
978978

979979
return data.vars[name];
@@ -989,15 +989,15 @@
989989

990990
if (check.name === "glob_") {
991991
if (!data._ || data._.length === 0) {
992-
throw "No _ data available.";
992+
throw new Error("No _ data available.");
993993
}
994994

995995
return data._.shift();
996996
} else if (check.name && check.name.indexOf("glob$") === 0) {
997997
var name = check.name.slice(5);
998998

999999
if (!data.vars || !(name in data.vars)) {
1000-
throw "No vars available.";
1000+
throw new Error("No vars available.");
10011001
}
10021002

10031003
return data.vars[name];

0 commit comments

Comments
 (0)