mirror of
				https://github.com/fooflington/selfdefined.git
				synced 2025-10-31 14:18:32 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			45 lines
		
	
	
		
			1.1 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			45 lines
		
	
	
		
			1.1 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
| // For each opening emphasis-like marker find a matching closing one
 | |
| //
 | |
| 'use strict';
 | |
| 
 | |
| 
 | |
| module.exports = function link_pairs(state) {
 | |
|   var i, j, lastDelim, currDelim,
 | |
|       delimiters = state.delimiters,
 | |
|       max = state.delimiters.length;
 | |
| 
 | |
|   for (i = 0; i < max; i++) {
 | |
|     lastDelim = delimiters[i];
 | |
| 
 | |
|     if (!lastDelim.close) { continue; }
 | |
| 
 | |
|     j = i - lastDelim.jump - 1;
 | |
| 
 | |
|     while (j >= 0) {
 | |
|       currDelim = delimiters[j];
 | |
| 
 | |
|       if (currDelim.open &&
 | |
|           currDelim.marker === lastDelim.marker &&
 | |
|           currDelim.end < 0 &&
 | |
|           currDelim.level === lastDelim.level) {
 | |
| 
 | |
|         // typeofs are for backward compatibility with plugins
 | |
|         var odd_match = (currDelim.close || lastDelim.open) &&
 | |
|                         typeof currDelim.length !== 'undefined' &&
 | |
|                         typeof lastDelim.length !== 'undefined' &&
 | |
|                         (currDelim.length + lastDelim.length) % 3 === 0;
 | |
| 
 | |
|         if (!odd_match) {
 | |
|           lastDelim.jump = i - j;
 | |
|           lastDelim.open = false;
 | |
|           currDelim.end  = i;
 | |
|           currDelim.jump = 0;
 | |
|           break;
 | |
|         }
 | |
|       }
 | |
| 
 | |
|       j -= currDelim.jump + 1;
 | |
|     }
 | |
|   }
 | |
| };
 | 
