mirror of https://github.com/webpack/webpack.git
41 lines
977 B
JavaScript
41 lines
977 B
JavaScript
/*
|
|
MIT License http://www.opensource.org/licenses/mit-license.php
|
|
Author Tobias Koppers @sokra
|
|
*/
|
|
var Source = require("webpack-core/lib/Source");
|
|
|
|
function ReplaceSource(source) {
|
|
Source.call(this);
|
|
this._source = source;
|
|
this.replacements = [];
|
|
}
|
|
module.exports = ReplaceSource;
|
|
|
|
ReplaceSource.prototype = Object.create(Source.prototype);
|
|
|
|
ReplaceSource.prototype.replace = function(start, end, newValue) {
|
|
this.replacements.push([start, end, newValue]);
|
|
};
|
|
|
|
ReplaceSource.prototype.insert = function(pos, newValue) {
|
|
this.replacements.push([pos, pos-1, newValue]);
|
|
};
|
|
|
|
ReplaceSource.prototype._bake = function() {
|
|
this.replacements.sort(function(a, b) {
|
|
return b[0] - a[0];
|
|
});
|
|
var result = [this._source.source()];
|
|
this.replacements.forEach(function(repl) {
|
|
var remSource = result.pop();
|
|
result.push(
|
|
remSource.substr(repl[1]+1),
|
|
repl[2],
|
|
remSource.substr(0, repl[0])
|
|
);
|
|
});
|
|
result = result.reverse().join("");
|
|
return {
|
|
source: result
|
|
}
|
|
}; |