mirror of
				https://github.com/fooflington/selfdefined.git
				synced 2025-10-31 14:18:32 +00:00 
			
		
		
		
	
		
			
	
	
		
			34 lines
		
	
	
		
			768 B
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
		
		
			
		
	
	
			34 lines
		
	
	
		
			768 B
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
|   | // Merge adjacent text nodes into one, and re-calculate all token levels
 | ||
|  | //
 | ||
|  | 'use strict'; | ||
|  | 
 | ||
|  | 
 | ||
|  | module.exports = function text_collapse(state) { | ||
|  |   var curr, last, | ||
|  |       level = 0, | ||
|  |       tokens = state.tokens, | ||
|  |       max = state.tokens.length; | ||
|  | 
 | ||
|  |   for (curr = last = 0; curr < max; curr++) { | ||
|  |     // re-calculate levels
 | ||
|  |     level += tokens[curr].nesting; | ||
|  |     tokens[curr].level = level; | ||
|  | 
 | ||
|  |     if (tokens[curr].type === 'text' && | ||
|  |         curr + 1 < max && | ||
|  |         tokens[curr + 1].type === 'text') { | ||
|  | 
 | ||
|  |       // collapse two adjacent text nodes
 | ||
|  |       tokens[curr + 1].content = tokens[curr].content + tokens[curr + 1].content; | ||
|  |     } else { | ||
|  |       if (curr !== last) { tokens[last] = tokens[curr]; } | ||
|  | 
 | ||
|  |       last++; | ||
|  |     } | ||
|  |   } | ||
|  | 
 | ||
|  |   if (curr !== last) { | ||
|  |     tokens.length = last; | ||
|  |   } | ||
|  | }; |