mirror of https://github.com/webpack/webpack.git
parent
cc930801b5
commit
4fef1312c5
|
|
@ -7,6 +7,9 @@ function BasicEvaluatedExpression() {
|
||||||
}
|
}
|
||||||
module.exports = BasicEvaluatedExpression;
|
module.exports = BasicEvaluatedExpression;
|
||||||
|
|
||||||
|
BasicEvaluatedExpression.prototype.isNull = function() {
|
||||||
|
return !!this.null;
|
||||||
|
};
|
||||||
BasicEvaluatedExpression.prototype.isString = function() {
|
BasicEvaluatedExpression.prototype.isString = function() {
|
||||||
return Object.prototype.hasOwnProperty.call(this, "string");
|
return Object.prototype.hasOwnProperty.call(this, "string");
|
||||||
};
|
};
|
||||||
|
|
@ -36,6 +39,7 @@ BasicEvaluatedExpression.prototype.isWrapped = function() {
|
||||||
};
|
};
|
||||||
BasicEvaluatedExpression.prototype.asBool = function() {
|
BasicEvaluatedExpression.prototype.asBool = function() {
|
||||||
if(this.isBoolean()) return this.bool;
|
if(this.isBoolean()) return this.bool;
|
||||||
|
else if(this.isNull()) return false;
|
||||||
else if(this.isString()) return !!this.string;
|
else if(this.isString()) return !!this.string;
|
||||||
else if(this.isNumber()) return !!this.number;
|
else if(this.isNumber()) return !!this.number;
|
||||||
else if(this.isRegExp()) return true;
|
else if(this.isRegExp()) return true;
|
||||||
|
|
@ -48,6 +52,7 @@ BasicEvaluatedExpression.prototype.set = function(value) {
|
||||||
if(typeof value === "string") return this.setString(value);
|
if(typeof value === "string") return this.setString(value);
|
||||||
if(typeof value === "number") return this.setNumber(value);
|
if(typeof value === "number") return this.setNumber(value);
|
||||||
if(typeof value === "boolean") return this.setBoolean(value);
|
if(typeof value === "boolean") return this.setBoolean(value);
|
||||||
|
if(value === null) return this.setNull();
|
||||||
if(value instanceof RegExp) return this.setRegExp(value);
|
if(value instanceof RegExp) return this.setRegExp(value);
|
||||||
if(Array.isArray(value)) return this.setArray(value);
|
if(Array.isArray(value)) return this.setArray(value);
|
||||||
return this;
|
return this;
|
||||||
|
|
@ -59,6 +64,10 @@ BasicEvaluatedExpression.prototype.setString = function(str) {
|
||||||
this.string = str;
|
this.string = str;
|
||||||
return this;
|
return this;
|
||||||
};
|
};
|
||||||
|
BasicEvaluatedExpression.prototype.setNull = function(str) {
|
||||||
|
this.null = true;
|
||||||
|
return this;
|
||||||
|
};
|
||||||
BasicEvaluatedExpression.prototype.setNumber = function(num) {
|
BasicEvaluatedExpression.prototype.setNumber = function(num) {
|
||||||
if(num === null)
|
if(num === null)
|
||||||
delete this.number;
|
delete this.number;
|
||||||
|
|
|
||||||
|
|
@ -33,6 +33,8 @@ Parser.prototype.initializeEvaluating = function() {
|
||||||
case "boolean":
|
case "boolean":
|
||||||
return new BasicEvaluatedExpression().setBoolean(expr.value).setRange(expr.range);
|
return new BasicEvaluatedExpression().setBoolean(expr.value).setRange(expr.range);
|
||||||
}
|
}
|
||||||
|
if(expr.value === null)
|
||||||
|
return new BasicEvaluatedExpression().setNull().setRange(expr.range);
|
||||||
if(expr.value instanceof RegExp)
|
if(expr.value instanceof RegExp)
|
||||||
return new BasicEvaluatedExpression().setRegExp(expr.value).setRange(expr.range);
|
return new BasicEvaluatedExpression().setRegExp(expr.value).setRange(expr.range);
|
||||||
});
|
});
|
||||||
|
|
|
||||||
|
|
@ -5,6 +5,12 @@ it("should define DEBUG", function() {
|
||||||
var y = DEBUG ? require("fail") : require("./a");
|
var y = DEBUG ? require("fail") : require("./a");
|
||||||
});
|
});
|
||||||
|
|
||||||
|
it("should evaluate null", function() {
|
||||||
|
var y = null ? require("fail") : require("./a");
|
||||||
|
if(null)
|
||||||
|
require("fail");
|
||||||
|
});
|
||||||
|
|
||||||
it("should short-circut evaluating", function() {
|
it("should short-circut evaluating", function() {
|
||||||
var expr;
|
var expr;
|
||||||
var a = DEBUG && expr ? require("fail") : require("./a");
|
var a = DEBUG && expr ? require("fail") : require("./a");
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue