2012-10-09 06:12:10 +08:00
|
|
|
/*
|
|
|
|
MIT License http://www.opensource.org/licenses/mit-license.php
|
|
|
|
Author Tobias Koppers @sokra
|
|
|
|
*/
|
2012-04-05 20:59:01 +08:00
|
|
|
var fs = require("fs");
|
2013-01-31 01:49:25 +08:00
|
|
|
var path = require("path");
|
2012-04-05 20:59:01 +08:00
|
|
|
|
2013-03-18 21:53:50 +08:00
|
|
|
function lessStrict(regExpStr) {
|
|
|
|
regExpStr = regExpStr
|
|
|
|
.replace(/node_modules/g, "(node_modules|~)")
|
|
|
|
.replace(/(\\\/|\\\\)/g, "[\\/\\\\]")
|
|
|
|
return regExpStr;
|
|
|
|
}
|
|
|
|
|
2013-01-31 01:49:25 +08:00
|
|
|
module.exports = function(template, baseDir, stdout, prefix) {
|
2012-04-05 20:59:01 +08:00
|
|
|
|
|
|
|
var regexp = new RegExp("\\{\\{" + (prefix ? prefix+":" : "") + "([^:\\}]+)\\}\\}", "g")
|
2012-05-07 03:07:24 +08:00
|
|
|
var cwd = process.cwd();
|
2013-03-18 21:53:50 +08:00
|
|
|
var webpack = path.join(__dirname, "..");
|
|
|
|
var webpackParent = path.join(__dirname, "..", "..");
|
|
|
|
cwd = lessStrict(cwd.replace(/[-[\]{}()*+?.,\\^$|#\s]/g, "\\$&"));
|
2012-05-07 03:07:24 +08:00
|
|
|
cwd = new RegExp(cwd, "g");
|
2013-03-18 21:53:50 +08:00
|
|
|
webpack = lessStrict(webpack.replace(/[-[\]{}()*+?.,\\^$|#\s]/g, "\\$&"));
|
|
|
|
webpack = new RegExp(webpack, "g");
|
|
|
|
webpackParent = lessStrict(webpackParent.replace(/[-[\]{}()*+?.,\\^$|#\s]/g, "\\$&"));
|
|
|
|
webpackParent = new RegExp(webpackParent, "g");
|
2012-04-05 20:59:01 +08:00
|
|
|
|
|
|
|
return template.replace(regexp, function(match) {
|
|
|
|
match = match.substr(2 + (prefix ? prefix.length+1 : 0), match.length - 4 - (prefix ? prefix.length+1 : 0));
|
|
|
|
if(match === "stdout")
|
|
|
|
return stdout;
|
2013-01-31 01:49:25 +08:00
|
|
|
return fs.readFileSync(path.join(baseDir, match), "utf-8");
|
2013-03-18 21:53:50 +08:00
|
|
|
}).replace(cwd, ".").replace(webpack, "(webpack)").replace(webpackParent, "(webpack)/~");
|
2012-04-05 20:59:01 +08:00
|
|
|
|
|
|
|
}
|