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
 | |
| 	}
 | |
| }; |