Protect context-lookups from undefined values

Fixes #166
Fixes #587
This commit is contained in:
kpdecker
2013-11-03 10:54:24 -06:00
parent 88fefc1521
commit ded0a1617f
3 changed files with 28 additions and 3 deletions
+15 -3
View File
@@ -10,13 +10,25 @@ JavaScriptCompiler.prototype = {
// PUBLIC API: You can override these methods in a subclass to provide
// alternative compiled forms for name lookup and buffering semantics
nameLookup: function(parent, name /* , type*/) {
var wrap,
ret;
if (parent.indexOf('depth') === 0) {
wrap = true;
}
if (/^[0-9]+$/.test(name)) {
return parent + "[" + name + "]";
ret = parent + "[" + name + "]";
} else if (JavaScriptCompiler.isValidJavaScriptVariableName(name)) {
return parent + "." + name;
ret = parent + "." + name;
}
else {
return parent + "['" + name + "']";
ret = parent + "['" + name + "']";
}
if (wrap) {
return '(' + parent + ' && ' + ret + ')';
} else {
return ret;
}
},