| 
									
										
										
										
											2013-01-31 01:49:25 +08:00
										 |  |  | /* | 
					
						
							|  |  |  | 	MIT License http://www.opensource.org/licenses/mit-license.php
 | 
					
						
							|  |  |  | 	Author Tobias Koppers @sokra | 
					
						
							|  |  |  | */ | 
					
						
							| 
									
										
										
										
											2013-03-26 23:54:41 +08:00
										 |  |  | var ReplaceSource = require("webpack-core/lib/ReplaceSource"); | 
					
						
							|  |  |  | var RawSource = require("webpack-core/lib/RawSource"); | 
					
						
							| 
									
										
										
										
											2013-01-31 01:49:25 +08:00
										 |  |  | 
 | 
					
						
							|  |  |  | function DependenciesBlockVariable(name, expression, dependencies) { | 
					
						
							|  |  |  | 	this.name = name; | 
					
						
							|  |  |  | 	this.expression = expression; | 
					
						
							|  |  |  | 	this.dependencies = dependencies || []; | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | module.exports = DependenciesBlockVariable; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | DependenciesBlockVariable.prototype.updateHash = function(hash) { | 
					
						
							|  |  |  | 	hash.update(this.name); | 
					
						
							|  |  |  | 	hash.update(this.expression); | 
					
						
							|  |  |  | 	this.dependencies.forEach(function(d) { | 
					
						
							|  |  |  | 		d.updateHash(hash); | 
					
						
							|  |  |  | 	}); | 
					
						
							|  |  |  | }; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | DependenciesBlockVariable.prototype.expressionSource = function(dependencyTemplates, outputOptions, requestShortener) { | 
					
						
							| 
									
										
										
										
											2013-03-26 23:54:41 +08:00
										 |  |  | 	var source = new ReplaceSource(new RawSource(this.expression)); | 
					
						
							| 
									
										
										
										
											2013-01-31 01:49:25 +08:00
										 |  |  | 	this.dependencies.forEach(function(dep) { | 
					
						
							|  |  |  | 		var template = dependencyTemplates.get(dep.Class); | 
					
						
							|  |  |  | 		if(!template) throw new Error("No template for dependency: " + dep.Class.name); | 
					
						
							|  |  |  | 		template.apply(dep, source, outputOptions, requestShortener); | 
					
						
							|  |  |  | 	}); | 
					
						
							|  |  |  | 	return source; | 
					
						
							|  |  |  | }; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | DependenciesBlockVariable.prototype.disconnect = function() { | 
					
						
							|  |  |  | 	this.dependencies.forEach(function(d) { | 
					
						
							|  |  |  | 		d.disconnect(); | 
					
						
							|  |  |  | 	}); | 
					
						
							|  |  |  | }; |