mirror of
				https://github.com/fooflington/selfdefined.git
				synced 2025-10-31 14:18:32 +00:00 
			
		
		
		
	
		
			
	
	
		
			44 lines
		
	
	
		
			1.1 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
		
		
			
		
	
	
			44 lines
		
	
	
		
			1.1 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
|   | // Parse backticks
 | ||
|  | 
 | ||
|  | 'use strict'; | ||
|  | 
 | ||
|  | module.exports = function backtick(state, silent) { | ||
|  |   var start, max, marker, matchStart, matchEnd, token, | ||
|  |       pos = state.pos, | ||
|  |       ch = state.src.charCodeAt(pos); | ||
|  | 
 | ||
|  |   if (ch !== 0x60/* ` */) { return false; } | ||
|  | 
 | ||
|  |   start = pos; | ||
|  |   pos++; | ||
|  |   max = state.posMax; | ||
|  | 
 | ||
|  |   while (pos < max && state.src.charCodeAt(pos) === 0x60/* ` */) { pos++; } | ||
|  | 
 | ||
|  |   marker = state.src.slice(start, pos); | ||
|  | 
 | ||
|  |   matchStart = matchEnd = pos; | ||
|  | 
 | ||
|  |   while ((matchStart = state.src.indexOf('`', matchEnd)) !== -1) { | ||
|  |     matchEnd = matchStart + 1; | ||
|  | 
 | ||
|  |     while (matchEnd < max && state.src.charCodeAt(matchEnd) === 0x60/* ` */) { matchEnd++; } | ||
|  | 
 | ||
|  |     if (matchEnd - matchStart === marker.length) { | ||
|  |       if (!silent) { | ||
|  |         token         = state.push('code_inline', 'code', 0); | ||
|  |         token.markup  = marker; | ||
|  |         token.content = state.src.slice(pos, matchStart) | ||
|  |                                  .replace(/[ \n]+/g, ' ') | ||
|  |                                  .trim(); | ||
|  |       } | ||
|  |       state.pos = matchEnd; | ||
|  |       return true; | ||
|  |     } | ||
|  |   } | ||
|  | 
 | ||
|  |   if (!silent) { state.pending += marker; } | ||
|  |   state.pos += marker.length; | ||
|  |   return true; | ||
|  | }; |