extract `buildExpression` to ParserHelpers.addParsedVariableToModule

rewrite affected modules
This commit is contained in:
Tim Sebastian 2017-02-25 00:23:24 +11:00
parent c6a8891367
commit d056ba7d40
3 changed files with 17 additions and 22 deletions

View File

@ -3,6 +3,8 @@
Author Tobias Koppers @sokra
*/
"use strict";
const path = require("path");
const BasicEvaluatedExpression = require("./BasicEvaluatedExpression");
const ConstDependency = require("./dependencies/ConstDependency");
const UnsupportedFeatureWarning = require("./UnsupportedFeatureWarning");
@ -25,6 +27,14 @@ ParserHelpers.addParsedVariableToModule = function(parser, name, expression) {
return true;
};
ParserHelpers.requireFileAsExpression = function(context, pathToModule) {
var moduleJsPath = path.relative(context, pathToModule);
if(!/^[A-Z]:/i.test(moduleJsPath)) {
moduleJsPath = "./" + moduleJsPath.replace(/\\/g, "/");
}
return "require(" + JSON.stringify(moduleJsPath) + ")";
};
ParserHelpers.toConstantDependency = function(value) {
return function constDependency(expr) {
var dep = new ConstDependency(value, expr.range);

View File

@ -3,8 +3,6 @@
Author Tobias Koppers @sokra
*/
"use strict";
const path = require("path");
const ParserHelpers = require("../ParserHelpers");
class SystemPlugin {
@ -33,15 +31,9 @@ class SystemPlugin {
setNotSupported("System.get");
setNotSupported("System.register");
parser.plugin("expression System", function() {
function buildExpression(context, pathToModule) {
var moduleJsPath = path.relative(context, pathToModule);
if(!/^[A-Z]:/i.test(moduleJsPath)) {
moduleJsPath = "./" + moduleJsPath.replace(/\\/g, "/");
}
return "require(" + JSON.stringify(moduleJsPath) + ")";
}
return ParserHelpers.addParsedVariableToModule(this, "System", buildExpression(this.state.module.context, require.resolve("../../buildin/system.js")));
const systemPolyfillRequire = ParserHelpers.requireFileAsExpression(
this.state.module.context, require.resolve("../../buildin/system.js"));
return ParserHelpers.addParsedVariableToModule(this, "System", systemPolyfillRequire);
});
});
});

View File

@ -2,7 +2,6 @@
MIT License http://www.opensource.org/licenses/mit-license.php
Author Tobias Koppers @sokra
*/
var path = require("path");
var AliasPlugin = require("enhanced-resolve/lib/AliasPlugin");
var ParserHelpers = require("../ParserHelpers");
var nodeLibsBrowser = require("node-libs-browser");
@ -25,19 +24,12 @@ NodeSourcePlugin.prototype.apply = function(compiler) {
} else return module;
}
function buildExpression(context, pathToModule) {
var moduleJsPath = path.relative(context, pathToModule);
if(!/^[A-Z]:/i.test(moduleJsPath)) {
moduleJsPath = "./" + moduleJsPath.replace(/\\/g, "/");
}
return "require(" + JSON.stringify(moduleJsPath) + ")";
}
function addExpression(parser, name, module, type, suffix) {
suffix = suffix || "";
parser.plugin("expression " + name, function() {
if(this.state.module && this.state.module.resource === getPathToModule(module, type)) return;
return ParserHelpers.addParsedVariableToModule(this, name, buildExpression(this.state.module.context, getPathToModule(module, type)) + suffix);
var mockModule = ParserHelpers.requireFileAsExpression(this.state.module.context, getPathToModule(module, type));
return ParserHelpers.addParsedVariableToModule(this, name, mockModule + suffix);
});
}
@ -53,7 +45,8 @@ NodeSourcePlugin.prototype.apply = function(compiler) {
if(localOptions.global) {
parser.plugin("expression global", function() {
return ParserHelpers.addParsedVariableToModule(this, "global", buildExpression(this.state.module.context, require.resolve("../../buildin/global.js")));
var retrieveGlobalModule = ParserHelpers.requireFileAsExpression(this.state.module.context, require.resolve("../../buildin/global.js"));
return ParserHelpers.addParsedVariableToModule(this, "global", retrieveGlobalModule);
});
}
if(localOptions.process) {