2013-01-31 01:49:25 +08:00
|
|
|
/*
|
|
|
|
|
MIT License http://www.opensource.org/licenses/mit-license.php
|
|
|
|
|
Author Tobias Koppers @sokra
|
|
|
|
|
*/
|
|
|
|
|
var AbstractPlugin = require("../AbstractPlugin");
|
|
|
|
|
var RequireContextDependency = require("./RequireContextDependency");
|
|
|
|
|
|
|
|
|
|
module.exports = AbstractPlugin.create({
|
|
|
|
|
"call require.context": function(expr) {
|
|
|
|
|
var regExp = /^\.\/.*$/;
|
|
|
|
|
var recursive = true;
|
2015-07-16 06:19:23 +08:00
|
|
|
switch(expr.arguments.length) {
|
2015-07-13 06:20:09 +08:00
|
|
|
case 3:
|
|
|
|
|
var regExpExpr = this.evaluateExpression(expr.arguments[2]);
|
2015-07-16 06:19:23 +08:00
|
|
|
if(!regExpExpr.isRegExp()) return;
|
2015-07-13 06:20:09 +08:00
|
|
|
regExp = regExpExpr.regExp;
|
|
|
|
|
// falls through
|
|
|
|
|
case 2:
|
|
|
|
|
var recursiveExpr = this.evaluateExpression(expr.arguments[1]);
|
2015-07-16 06:19:23 +08:00
|
|
|
if(!recursiveExpr.isBoolean()) return;
|
2015-07-13 06:20:09 +08:00
|
|
|
recursive = recursiveExpr.bool;
|
|
|
|
|
// falls through
|
|
|
|
|
case 1:
|
|
|
|
|
var requestExpr = this.evaluateExpression(expr.arguments[0]);
|
2015-07-16 06:19:23 +08:00
|
|
|
if(!requestExpr.isString()) return;
|
2015-07-13 06:20:09 +08:00
|
|
|
var dep = new RequireContextDependency(requestExpr.string, recursive, regExp, expr.range);
|
|
|
|
|
dep.loc = expr.loc;
|
|
|
|
|
dep.optional = this.scope.inTry;
|
|
|
|
|
this.state.current.addDependency(dep);
|
|
|
|
|
return true;
|
2013-01-31 01:49:25 +08:00
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
});
|