You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
					34 lines
				
				454 B
			
		
		
			
		
	
	
					34 lines
				
				454 B
			| 
								 
											3 years ago
										 
									 | 
							
								'use strict'
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								function reusify (Constructor) {
							 | 
						||
| 
								 | 
							
								  var head = new Constructor()
							 | 
						||
| 
								 | 
							
								  var tail = head
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  function get () {
							 | 
						||
| 
								 | 
							
								    var current = head
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    if (current.next) {
							 | 
						||
| 
								 | 
							
								      head = current.next
							 | 
						||
| 
								 | 
							
								    } else {
							 | 
						||
| 
								 | 
							
								      head = new Constructor()
							 | 
						||
| 
								 | 
							
								      tail = head
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    current.next = null
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    return current
							 | 
						||
| 
								 | 
							
								  }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  function release (obj) {
							 | 
						||
| 
								 | 
							
								    tail.next = obj
							 | 
						||
| 
								 | 
							
								    tail = obj
							 | 
						||
| 
								 | 
							
								  }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  return {
							 | 
						||
| 
								 | 
							
								    get: get,
							 | 
						||
| 
								 | 
							
								    release: release
							 | 
						||
| 
								 | 
							
								  }
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								module.exports = reusify
							 |