evaluate typeof requrire.ensure/include

#183
This commit is contained in:
Tobias Koppers 2014-02-27 08:49:03 +01:00
parent 3e9d9811a1
commit f0c7815c93
3 changed files with 32 additions and 0 deletions

View File

@ -4,11 +4,14 @@
*/
var RequireEnsureItemDependency = require("./RequireEnsureItemDependency");
var RequireEnsureDependency = require("./RequireEnsureDependency");
var ConstDependency = require("./ConstDependency");
var NullFactory = require("../NullFactory");
var RequireEnsureDependenciesBlockParserPlugin = require("./RequireEnsureDependenciesBlockParserPlugin");
var BasicEvaluatedExpression = require("../BasicEvaluatedExpression");
function RequireEnsurePlugin() {
}
module.exports = RequireEnsurePlugin;
@ -24,4 +27,13 @@ RequireEnsurePlugin.prototype.apply = function(compiler) {
compilation.dependencyTemplates.set(RequireEnsureDependency, new RequireEnsureDependency.Template());
});
new RequireEnsureDependenciesBlockParserPlugin().apply(compiler.parser);
compiler.parser.plugin("evaluate typeof require.ensure", function(expr) {
return new BasicEvaluatedExpression().setString("function").setRange(expr.range);
});
compiler.parser.plugin("typeof require.ensure", function(expr) {
var dep = new ConstDependency("'function'", expr.range);
dep.loc = expr.loc;
this.state.current.addDependency(dep);
return true;
});
};

View File

@ -4,6 +4,9 @@
*/
var RequireIncludeDependency = require("./RequireIncludeDependency");
var RequireIncludeDependencyParserPlugin = require("./RequireIncludeDependencyParserPlugin");
var ConstDependency = require("./ConstDependency");
var BasicEvaluatedExpression = require("../BasicEvaluatedExpression");
function RequireIncludePlugin() {
}
@ -17,4 +20,13 @@ RequireIncludePlugin.prototype.apply = function(compiler) {
compilation.dependencyTemplates.set(RequireIncludeDependency, new RequireIncludeDependency.Template());
});
new RequireIncludeDependencyParserPlugin().apply(compiler.parser);
compiler.parser.plugin("evaluate typeof require.include", function(expr) {
return new BasicEvaluatedExpression().setString("function").setRange(expr.range);
});
compiler.parser.plugin("typeof require.include", function(expr) {
var dep = new ConstDependency("'function'", expr.range);
dep.loc = expr.loc;
this.state.current.addDependency(dep);
return true;
});
};

View File

@ -20,6 +20,12 @@ it("should answer typeof module correctly", function() {
it("should answer typeof exports correctly", function() {
(typeof exports).should.be.eql("object");
});
it("should answer typeof require.include correctly", function() {
(typeof require.include).should.be.eql("function");
});
it("should answer typeof require.ensure correctly", function() {
(typeof require.ensure).should.be.eql("function");
});
it("should not parse filtered stuff", function() {
@ -33,4 +39,6 @@ it("should not parse filtered stuff", function() {
if(typeof module === "undefined") module = require("fail");
if(typeof module != "object") module = require("fail");
if(typeof exports == "undefined") exports = require("fail");
if(typeof require.include !== "function") require.include("fail");
if(typeof require.ensure !== "function") require.ensure(["fail"], function(){});
});