| 
									
										
										
										
											2013-01-31 01:49:25 +08:00
										 |  |  | /* | 
					
						
							|  |  |  | 	MIT License http://www.opensource.org/licenses/mit-license.php
 | 
					
						
							|  |  |  | 	Author Tobias Koppers @sokra | 
					
						
							|  |  |  | */ | 
					
						
							|  |  |  | var DependenciesBlockVariable = require("./DependenciesBlockVariable"); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | function DependenciesBlock() { | 
					
						
							|  |  |  | 	this.dependencies = []; | 
					
						
							|  |  |  | 	this.blocks = []; | 
					
						
							|  |  |  | 	this.variables = []; | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | module.exports = DependenciesBlock; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | DependenciesBlock.prototype.addBlock = function(block) { | 
					
						
							|  |  |  | 	this.blocks.push(block); | 
					
						
							| 
									
										
										
										
											2013-05-31 18:22:40 +08:00
										 |  |  | 	block.parent = this; | 
					
						
							| 
									
										
										
										
											2014-06-25 00:53:32 +08:00
										 |  |  | }; | 
					
						
							| 
									
										
										
										
											2013-01-31 01:49:25 +08:00
										 |  |  | 
 | 
					
						
							|  |  |  | DependenciesBlock.prototype.addVariable = function(name, expression, dependencies) { | 
					
						
							|  |  |  | 	for(var i = 0; i < this.variables.length; i++) { | 
					
						
							|  |  |  | 		var v = this.variables[i]; | 
					
						
							| 
									
										
										
										
											2014-06-25 00:53:32 +08:00
										 |  |  | 		if(v.name === name && v.expression === expression) return; | 
					
						
							| 
									
										
										
										
											2013-01-31 01:49:25 +08:00
										 |  |  | 	} | 
					
						
							|  |  |  | 	this.variables.push(new DependenciesBlockVariable(name, expression, dependencies)); | 
					
						
							| 
									
										
										
										
											2014-06-25 00:53:32 +08:00
										 |  |  | }; | 
					
						
							| 
									
										
										
										
											2013-01-31 01:49:25 +08:00
										 |  |  | 
 | 
					
						
							|  |  |  | DependenciesBlock.prototype.addDependency = function(dependency) { | 
					
						
							|  |  |  | 	this.dependencies.push(dependency); | 
					
						
							| 
									
										
										
										
											2014-06-25 00:53:32 +08:00
										 |  |  | }; | 
					
						
							| 
									
										
										
										
											2013-01-31 01:49:25 +08:00
										 |  |  | 
 | 
					
						
							|  |  |  | DependenciesBlock.prototype.updateHash = function(hash) { | 
					
						
							|  |  |  | 	this.dependencies.forEach(function(d) { | 
					
						
							|  |  |  | 		d.updateHash(hash); | 
					
						
							|  |  |  | 	}); | 
					
						
							|  |  |  | 	this.blocks.forEach(function(b) { | 
					
						
							|  |  |  | 		b.updateHash(hash); | 
					
						
							|  |  |  | 	}); | 
					
						
							|  |  |  | 	this.variables.forEach(function(v) { | 
					
						
							|  |  |  | 		v.updateHash(hash); | 
					
						
							|  |  |  | 	}); | 
					
						
							|  |  |  | }; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | DependenciesBlock.prototype.disconnect = function() { | 
					
						
							|  |  |  | 	function disconnect(i) { | 
					
						
							|  |  |  | 		i.disconnect(); | 
					
						
							|  |  |  | 	} | 
					
						
							|  |  |  | 	this.dependencies.forEach(disconnect); | 
					
						
							|  |  |  | 	this.blocks.forEach(disconnect); | 
					
						
							|  |  |  | 	this.variables.forEach(disconnect); | 
					
						
							|  |  |  | }; |