mirror of
				https://github.com/fooflington/selfdefined.git
				synced 2025-10-31 14:18:32 +00:00 
			
		
		
		
	update
This commit is contained in:
		
							
								
								
									
										72
									
								
								node_modules/markdown-it/lib/rules_inline/autolink.js
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										72
									
								
								node_modules/markdown-it/lib/rules_inline/autolink.js
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1,72 @@ | ||||
| // Process autolinks '<protocol:...>' | ||||
|  | ||||
| 'use strict'; | ||||
|  | ||||
|  | ||||
| /*eslint max-len:0*/ | ||||
| var EMAIL_RE    = /^<([a-zA-Z0-9.!#$%&'*+\/=?^_`{|}~-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*)>/; | ||||
| var AUTOLINK_RE = /^<([a-zA-Z][a-zA-Z0-9+.\-]{1,31}):([^<>\x00-\x20]*)>/; | ||||
|  | ||||
|  | ||||
| module.exports = function autolink(state, silent) { | ||||
|   var tail, linkMatch, emailMatch, url, fullUrl, token, | ||||
|       pos = state.pos; | ||||
|  | ||||
|   if (state.src.charCodeAt(pos) !== 0x3C/* < */) { return false; } | ||||
|  | ||||
|   tail = state.src.slice(pos); | ||||
|  | ||||
|   if (tail.indexOf('>') < 0) { return false; } | ||||
|  | ||||
|   if (AUTOLINK_RE.test(tail)) { | ||||
|     linkMatch = tail.match(AUTOLINK_RE); | ||||
|  | ||||
|     url = linkMatch[0].slice(1, -1); | ||||
|     fullUrl = state.md.normalizeLink(url); | ||||
|     if (!state.md.validateLink(fullUrl)) { return false; } | ||||
|  | ||||
|     if (!silent) { | ||||
|       token         = state.push('link_open', 'a', 1); | ||||
|       token.attrs   = [ [ 'href', fullUrl ] ]; | ||||
|       token.markup  = 'autolink'; | ||||
|       token.info    = 'auto'; | ||||
|  | ||||
|       token         = state.push('text', '', 0); | ||||
|       token.content = state.md.normalizeLinkText(url); | ||||
|  | ||||
|       token         = state.push('link_close', 'a', -1); | ||||
|       token.markup  = 'autolink'; | ||||
|       token.info    = 'auto'; | ||||
|     } | ||||
|  | ||||
|     state.pos += linkMatch[0].length; | ||||
|     return true; | ||||
|   } | ||||
|  | ||||
|   if (EMAIL_RE.test(tail)) { | ||||
|     emailMatch = tail.match(EMAIL_RE); | ||||
|  | ||||
|     url = emailMatch[0].slice(1, -1); | ||||
|     fullUrl = state.md.normalizeLink('mailto:' + url); | ||||
|     if (!state.md.validateLink(fullUrl)) { return false; } | ||||
|  | ||||
|     if (!silent) { | ||||
|       token         = state.push('link_open', 'a', 1); | ||||
|       token.attrs   = [ [ 'href', fullUrl ] ]; | ||||
|       token.markup  = 'autolink'; | ||||
|       token.info    = 'auto'; | ||||
|  | ||||
|       token         = state.push('text', '', 0); | ||||
|       token.content = state.md.normalizeLinkText(url); | ||||
|  | ||||
|       token         = state.push('link_close', 'a', -1); | ||||
|       token.markup  = 'autolink'; | ||||
|       token.info    = 'auto'; | ||||
|     } | ||||
|  | ||||
|     state.pos += emailMatch[0].length; | ||||
|     return true; | ||||
|   } | ||||
|  | ||||
|   return false; | ||||
| }; | ||||
							
								
								
									
										43
									
								
								node_modules/markdown-it/lib/rules_inline/backticks.js
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										43
									
								
								node_modules/markdown-it/lib/rules_inline/backticks.js
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1,43 @@ | ||||
| // 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; | ||||
| }; | ||||
							
								
								
									
										44
									
								
								node_modules/markdown-it/lib/rules_inline/balance_pairs.js
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										44
									
								
								node_modules/markdown-it/lib/rules_inline/balance_pairs.js
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1,44 @@ | ||||
| // 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; | ||||
|     } | ||||
|   } | ||||
| }; | ||||
							
								
								
									
										127
									
								
								node_modules/markdown-it/lib/rules_inline/emphasis.js
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										127
									
								
								node_modules/markdown-it/lib/rules_inline/emphasis.js
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1,127 @@ | ||||
| // Process *this* and _that_ | ||||
| // | ||||
| 'use strict'; | ||||
|  | ||||
|  | ||||
| // Insert each marker as a separate text token, and add it to delimiter list | ||||
| // | ||||
| module.exports.tokenize = function emphasis(state, silent) { | ||||
|   var i, scanned, token, | ||||
|       start = state.pos, | ||||
|       marker = state.src.charCodeAt(start); | ||||
|  | ||||
|   if (silent) { return false; } | ||||
|  | ||||
|   if (marker !== 0x5F /* _ */ && marker !== 0x2A /* * */) { return false; } | ||||
|  | ||||
|   scanned = state.scanDelims(state.pos, marker === 0x2A); | ||||
|  | ||||
|   for (i = 0; i < scanned.length; i++) { | ||||
|     token         = state.push('text', '', 0); | ||||
|     token.content = String.fromCharCode(marker); | ||||
|  | ||||
|     state.delimiters.push({ | ||||
|       // Char code of the starting marker (number). | ||||
|       // | ||||
|       marker: marker, | ||||
|  | ||||
|       // Total length of these series of delimiters. | ||||
|       // | ||||
|       length: scanned.length, | ||||
|  | ||||
|       // An amount of characters before this one that's equivalent to | ||||
|       // current one. In plain English: if this delimiter does not open | ||||
|       // an emphasis, neither do previous `jump` characters. | ||||
|       // | ||||
|       // Used to skip sequences like "*****" in one step, for 1st asterisk | ||||
|       // value will be 0, for 2nd it's 1 and so on. | ||||
|       // | ||||
|       jump:   i, | ||||
|  | ||||
|       // A position of the token this delimiter corresponds to. | ||||
|       // | ||||
|       token:  state.tokens.length - 1, | ||||
|  | ||||
|       // Token level. | ||||
|       // | ||||
|       level:  state.level, | ||||
|  | ||||
|       // If this delimiter is matched as a valid opener, `end` will be | ||||
|       // equal to its position, otherwise it's `-1`. | ||||
|       // | ||||
|       end:    -1, | ||||
|  | ||||
|       // Boolean flags that determine if this delimiter could open or close | ||||
|       // an emphasis. | ||||
|       // | ||||
|       open:   scanned.can_open, | ||||
|       close:  scanned.can_close | ||||
|     }); | ||||
|   } | ||||
|  | ||||
|   state.pos += scanned.length; | ||||
|  | ||||
|   return true; | ||||
| }; | ||||
|  | ||||
|  | ||||
| // Walk through delimiter list and replace text tokens with tags | ||||
| // | ||||
| module.exports.postProcess = function emphasis(state) { | ||||
|   var i, | ||||
|       startDelim, | ||||
|       endDelim, | ||||
|       token, | ||||
|       ch, | ||||
|       isStrong, | ||||
|       delimiters = state.delimiters, | ||||
|       max = state.delimiters.length; | ||||
|  | ||||
|   for (i = max - 1; i >= 0; i--) { | ||||
|     startDelim = delimiters[i]; | ||||
|  | ||||
|     if (startDelim.marker !== 0x5F/* _ */ && startDelim.marker !== 0x2A/* * */) { | ||||
|       continue; | ||||
|     } | ||||
|  | ||||
|     // Process only opening markers | ||||
|     if (startDelim.end === -1) { | ||||
|       continue; | ||||
|     } | ||||
|  | ||||
|     endDelim = delimiters[startDelim.end]; | ||||
|  | ||||
|     // If the previous delimiter has the same marker and is adjacent to this one, | ||||
|     // merge those into one strong delimiter. | ||||
|     // | ||||
|     // `<em><em>whatever</em></em>` -> `<strong>whatever</strong>` | ||||
|     // | ||||
|     isStrong = i > 0 && | ||||
|                delimiters[i - 1].end === startDelim.end + 1 && | ||||
|                delimiters[i - 1].token === startDelim.token - 1 && | ||||
|                delimiters[startDelim.end + 1].token === endDelim.token + 1 && | ||||
|                delimiters[i - 1].marker === startDelim.marker; | ||||
|  | ||||
|     ch = String.fromCharCode(startDelim.marker); | ||||
|  | ||||
|     token         = state.tokens[startDelim.token]; | ||||
|     token.type    = isStrong ? 'strong_open' : 'em_open'; | ||||
|     token.tag     = isStrong ? 'strong' : 'em'; | ||||
|     token.nesting = 1; | ||||
|     token.markup  = isStrong ? ch + ch : ch; | ||||
|     token.content = ''; | ||||
|  | ||||
|     token         = state.tokens[endDelim.token]; | ||||
|     token.type    = isStrong ? 'strong_close' : 'em_close'; | ||||
|     token.tag     = isStrong ? 'strong' : 'em'; | ||||
|     token.nesting = -1; | ||||
|     token.markup  = isStrong ? ch + ch : ch; | ||||
|     token.content = ''; | ||||
|  | ||||
|     if (isStrong) { | ||||
|       state.tokens[delimiters[i - 1].token].content = ''; | ||||
|       state.tokens[delimiters[startDelim.end + 1].token].content = ''; | ||||
|       i--; | ||||
|     } | ||||
|   } | ||||
| }; | ||||
							
								
								
									
										48
									
								
								node_modules/markdown-it/lib/rules_inline/entity.js
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										48
									
								
								node_modules/markdown-it/lib/rules_inline/entity.js
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1,48 @@ | ||||
| // Process html entity - {, ¯, ", ... | ||||
|  | ||||
| 'use strict'; | ||||
|  | ||||
| var entities          = require('../common/entities'); | ||||
| var has               = require('../common/utils').has; | ||||
| var isValidEntityCode = require('../common/utils').isValidEntityCode; | ||||
| var fromCodePoint     = require('../common/utils').fromCodePoint; | ||||
|  | ||||
|  | ||||
| var DIGITAL_RE = /^&#((?:x[a-f0-9]{1,8}|[0-9]{1,8}));/i; | ||||
| var NAMED_RE   = /^&([a-z][a-z0-9]{1,31});/i; | ||||
|  | ||||
|  | ||||
| module.exports = function entity(state, silent) { | ||||
|   var ch, code, match, pos = state.pos, max = state.posMax; | ||||
|  | ||||
|   if (state.src.charCodeAt(pos) !== 0x26/* & */) { return false; } | ||||
|  | ||||
|   if (pos + 1 < max) { | ||||
|     ch = state.src.charCodeAt(pos + 1); | ||||
|  | ||||
|     if (ch === 0x23 /* # */) { | ||||
|       match = state.src.slice(pos).match(DIGITAL_RE); | ||||
|       if (match) { | ||||
|         if (!silent) { | ||||
|           code = match[1][0].toLowerCase() === 'x' ? parseInt(match[1].slice(1), 16) : parseInt(match[1], 10); | ||||
|           state.pending += isValidEntityCode(code) ? fromCodePoint(code) : fromCodePoint(0xFFFD); | ||||
|         } | ||||
|         state.pos += match[0].length; | ||||
|         return true; | ||||
|       } | ||||
|     } else { | ||||
|       match = state.src.slice(pos).match(NAMED_RE); | ||||
|       if (match) { | ||||
|         if (has(entities, match[1])) { | ||||
|           if (!silent) { state.pending += entities[match[1]]; } | ||||
|           state.pos += match[0].length; | ||||
|           return true; | ||||
|         } | ||||
|       } | ||||
|     } | ||||
|   } | ||||
|  | ||||
|   if (!silent) { state.pending += '&'; } | ||||
|   state.pos++; | ||||
|   return true; | ||||
| }; | ||||
							
								
								
									
										52
									
								
								node_modules/markdown-it/lib/rules_inline/escape.js
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										52
									
								
								node_modules/markdown-it/lib/rules_inline/escape.js
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1,52 @@ | ||||
| // Process escaped chars and hardbreaks | ||||
|  | ||||
| 'use strict'; | ||||
|  | ||||
| var isSpace = require('../common/utils').isSpace; | ||||
|  | ||||
| var ESCAPED = []; | ||||
|  | ||||
| for (var i = 0; i < 256; i++) { ESCAPED.push(0); } | ||||
|  | ||||
| '\\!"#$%&\'()*+,./:;<=>?@[]^_`{|}~-' | ||||
|   .split('').forEach(function (ch) { ESCAPED[ch.charCodeAt(0)] = 1; }); | ||||
|  | ||||
|  | ||||
| module.exports = function escape(state, silent) { | ||||
|   var ch, pos = state.pos, max = state.posMax; | ||||
|  | ||||
|   if (state.src.charCodeAt(pos) !== 0x5C/* \ */) { return false; } | ||||
|  | ||||
|   pos++; | ||||
|  | ||||
|   if (pos < max) { | ||||
|     ch = state.src.charCodeAt(pos); | ||||
|  | ||||
|     if (ch < 256 && ESCAPED[ch] !== 0) { | ||||
|       if (!silent) { state.pending += state.src[pos]; } | ||||
|       state.pos += 2; | ||||
|       return true; | ||||
|     } | ||||
|  | ||||
|     if (ch === 0x0A) { | ||||
|       if (!silent) { | ||||
|         state.push('hardbreak', 'br', 0); | ||||
|       } | ||||
|  | ||||
|       pos++; | ||||
|       // skip leading whitespaces from next line | ||||
|       while (pos < max) { | ||||
|         ch = state.src.charCodeAt(pos); | ||||
|         if (!isSpace(ch)) { break; } | ||||
|         pos++; | ||||
|       } | ||||
|  | ||||
|       state.pos = pos; | ||||
|       return true; | ||||
|     } | ||||
|   } | ||||
|  | ||||
|   if (!silent) { state.pending += '\\'; } | ||||
|   state.pos++; | ||||
|   return true; | ||||
| }; | ||||
							
								
								
									
										47
									
								
								node_modules/markdown-it/lib/rules_inline/html_inline.js
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										47
									
								
								node_modules/markdown-it/lib/rules_inline/html_inline.js
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1,47 @@ | ||||
| // Process html tags | ||||
|  | ||||
| 'use strict'; | ||||
|  | ||||
|  | ||||
| var HTML_TAG_RE = require('../common/html_re').HTML_TAG_RE; | ||||
|  | ||||
|  | ||||
| function isLetter(ch) { | ||||
|   /*eslint no-bitwise:0*/ | ||||
|   var lc = ch | 0x20; // to lower case | ||||
|   return (lc >= 0x61/* a */) && (lc <= 0x7a/* z */); | ||||
| } | ||||
|  | ||||
|  | ||||
| module.exports = function html_inline(state, silent) { | ||||
|   var ch, match, max, token, | ||||
|       pos = state.pos; | ||||
|  | ||||
|   if (!state.md.options.html) { return false; } | ||||
|  | ||||
|   // Check start | ||||
|   max = state.posMax; | ||||
|   if (state.src.charCodeAt(pos) !== 0x3C/* < */ || | ||||
|       pos + 2 >= max) { | ||||
|     return false; | ||||
|   } | ||||
|  | ||||
|   // Quick fail on second char | ||||
|   ch = state.src.charCodeAt(pos + 1); | ||||
|   if (ch !== 0x21/* ! */ && | ||||
|       ch !== 0x3F/* ? */ && | ||||
|       ch !== 0x2F/* / */ && | ||||
|       !isLetter(ch)) { | ||||
|     return false; | ||||
|   } | ||||
|  | ||||
|   match = state.src.slice(pos).match(HTML_TAG_RE); | ||||
|   if (!match) { return false; } | ||||
|  | ||||
|   if (!silent) { | ||||
|     token         = state.push('html_inline', '', 0); | ||||
|     token.content = state.src.slice(pos, pos + match[0].length); | ||||
|   } | ||||
|   state.pos += match[0].length; | ||||
|   return true; | ||||
| }; | ||||
							
								
								
									
										152
									
								
								node_modules/markdown-it/lib/rules_inline/image.js
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										152
									
								
								node_modules/markdown-it/lib/rules_inline/image.js
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1,152 @@ | ||||
| // Process  | ||||
|  | ||||
| 'use strict'; | ||||
|  | ||||
| var normalizeReference   = require('../common/utils').normalizeReference; | ||||
| var isSpace              = require('../common/utils').isSpace; | ||||
|  | ||||
|  | ||||
| module.exports = function image(state, silent) { | ||||
|   var attrs, | ||||
|       code, | ||||
|       content, | ||||
|       label, | ||||
|       labelEnd, | ||||
|       labelStart, | ||||
|       pos, | ||||
|       ref, | ||||
|       res, | ||||
|       title, | ||||
|       token, | ||||
|       tokens, | ||||
|       start, | ||||
|       href = '', | ||||
|       oldPos = state.pos, | ||||
|       max = state.posMax; | ||||
|  | ||||
|   if (state.src.charCodeAt(state.pos) !== 0x21/* ! */) { return false; } | ||||
|   if (state.src.charCodeAt(state.pos + 1) !== 0x5B/* [ */) { return false; } | ||||
|  | ||||
|   labelStart = state.pos + 2; | ||||
|   labelEnd = state.md.helpers.parseLinkLabel(state, state.pos + 1, false); | ||||
|  | ||||
|   // parser failed to find ']', so it's not a valid link | ||||
|   if (labelEnd < 0) { return false; } | ||||
|  | ||||
|   pos = labelEnd + 1; | ||||
|   if (pos < max && state.src.charCodeAt(pos) === 0x28/* ( */) { | ||||
|     // | ||||
|     // Inline link | ||||
|     // | ||||
|  | ||||
|     // [link](  <href>  "title"  ) | ||||
|     //        ^^ skipping these spaces | ||||
|     pos++; | ||||
|     for (; pos < max; pos++) { | ||||
|       code = state.src.charCodeAt(pos); | ||||
|       if (!isSpace(code) && code !== 0x0A) { break; } | ||||
|     } | ||||
|     if (pos >= max) { return false; } | ||||
|  | ||||
|     // [link](  <href>  "title"  ) | ||||
|     //          ^^^^^^ parsing link destination | ||||
|     start = pos; | ||||
|     res = state.md.helpers.parseLinkDestination(state.src, pos, state.posMax); | ||||
|     if (res.ok) { | ||||
|       href = state.md.normalizeLink(res.str); | ||||
|       if (state.md.validateLink(href)) { | ||||
|         pos = res.pos; | ||||
|       } else { | ||||
|         href = ''; | ||||
|       } | ||||
|     } | ||||
|  | ||||
|     // [link](  <href>  "title"  ) | ||||
|     //                ^^ skipping these spaces | ||||
|     start = pos; | ||||
|     for (; pos < max; pos++) { | ||||
|       code = state.src.charCodeAt(pos); | ||||
|       if (!isSpace(code) && code !== 0x0A) { break; } | ||||
|     } | ||||
|  | ||||
|     // [link](  <href>  "title"  ) | ||||
|     //                  ^^^^^^^ parsing link title | ||||
|     res = state.md.helpers.parseLinkTitle(state.src, pos, state.posMax); | ||||
|     if (pos < max && start !== pos && res.ok) { | ||||
|       title = res.str; | ||||
|       pos = res.pos; | ||||
|  | ||||
|       // [link](  <href>  "title"  ) | ||||
|       //                         ^^ skipping these spaces | ||||
|       for (; pos < max; pos++) { | ||||
|         code = state.src.charCodeAt(pos); | ||||
|         if (!isSpace(code) && code !== 0x0A) { break; } | ||||
|       } | ||||
|     } else { | ||||
|       title = ''; | ||||
|     } | ||||
|  | ||||
|     if (pos >= max || state.src.charCodeAt(pos) !== 0x29/* ) */) { | ||||
|       state.pos = oldPos; | ||||
|       return false; | ||||
|     } | ||||
|     pos++; | ||||
|   } else { | ||||
|     // | ||||
|     // Link reference | ||||
|     // | ||||
|     if (typeof state.env.references === 'undefined') { return false; } | ||||
|  | ||||
|     if (pos < max && state.src.charCodeAt(pos) === 0x5B/* [ */) { | ||||
|       start = pos + 1; | ||||
|       pos = state.md.helpers.parseLinkLabel(state, pos); | ||||
|       if (pos >= 0) { | ||||
|         label = state.src.slice(start, pos++); | ||||
|       } else { | ||||
|         pos = labelEnd + 1; | ||||
|       } | ||||
|     } else { | ||||
|       pos = labelEnd + 1; | ||||
|     } | ||||
|  | ||||
|     // covers label === '' and label === undefined | ||||
|     // (collapsed reference link and shortcut reference link respectively) | ||||
|     if (!label) { label = state.src.slice(labelStart, labelEnd); } | ||||
|  | ||||
|     ref = state.env.references[normalizeReference(label)]; | ||||
|     if (!ref) { | ||||
|       state.pos = oldPos; | ||||
|       return false; | ||||
|     } | ||||
|     href = ref.href; | ||||
|     title = ref.title; | ||||
|   } | ||||
|  | ||||
|   // | ||||
|   // We found the end of the link, and know for a fact it's a valid link; | ||||
|   // so all that's left to do is to call tokenizer. | ||||
|   // | ||||
|   if (!silent) { | ||||
|     content = state.src.slice(labelStart, labelEnd); | ||||
|  | ||||
|     state.md.inline.parse( | ||||
|       content, | ||||
|       state.md, | ||||
|       state.env, | ||||
|       tokens = [] | ||||
|     ); | ||||
|  | ||||
|     token          = state.push('image', 'img', 0); | ||||
|     token.attrs    = attrs = [ [ 'src', href ], [ 'alt', '' ] ]; | ||||
|     token.children = tokens; | ||||
|     token.content  = content; | ||||
|  | ||||
|     if (title) { | ||||
|       attrs.push([ 'title', title ]); | ||||
|     } | ||||
|   } | ||||
|  | ||||
|   state.pos = pos; | ||||
|   state.posMax = max; | ||||
|   return true; | ||||
| }; | ||||
							
								
								
									
										150
									
								
								node_modules/markdown-it/lib/rules_inline/link.js
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										150
									
								
								node_modules/markdown-it/lib/rules_inline/link.js
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1,150 @@ | ||||
| // Process [link](<to> "stuff") | ||||
|  | ||||
| 'use strict'; | ||||
|  | ||||
| var normalizeReference   = require('../common/utils').normalizeReference; | ||||
| var isSpace              = require('../common/utils').isSpace; | ||||
|  | ||||
|  | ||||
| module.exports = function link(state, silent) { | ||||
|   var attrs, | ||||
|       code, | ||||
|       label, | ||||
|       labelEnd, | ||||
|       labelStart, | ||||
|       pos, | ||||
|       res, | ||||
|       ref, | ||||
|       title, | ||||
|       token, | ||||
|       href = '', | ||||
|       oldPos = state.pos, | ||||
|       max = state.posMax, | ||||
|       start = state.pos, | ||||
|       parseReference = true; | ||||
|  | ||||
|   if (state.src.charCodeAt(state.pos) !== 0x5B/* [ */) { return false; } | ||||
|  | ||||
|   labelStart = state.pos + 1; | ||||
|   labelEnd = state.md.helpers.parseLinkLabel(state, state.pos, true); | ||||
|  | ||||
|   // parser failed to find ']', so it's not a valid link | ||||
|   if (labelEnd < 0) { return false; } | ||||
|  | ||||
|   pos = labelEnd + 1; | ||||
|   if (pos < max && state.src.charCodeAt(pos) === 0x28/* ( */) { | ||||
|     // | ||||
|     // Inline link | ||||
|     // | ||||
|  | ||||
|     // might have found a valid shortcut link, disable reference parsing | ||||
|     parseReference = false; | ||||
|  | ||||
|     // [link](  <href>  "title"  ) | ||||
|     //        ^^ skipping these spaces | ||||
|     pos++; | ||||
|     for (; pos < max; pos++) { | ||||
|       code = state.src.charCodeAt(pos); | ||||
|       if (!isSpace(code) && code !== 0x0A) { break; } | ||||
|     } | ||||
|     if (pos >= max) { return false; } | ||||
|  | ||||
|     // [link](  <href>  "title"  ) | ||||
|     //          ^^^^^^ parsing link destination | ||||
|     start = pos; | ||||
|     res = state.md.helpers.parseLinkDestination(state.src, pos, state.posMax); | ||||
|     if (res.ok) { | ||||
|       href = state.md.normalizeLink(res.str); | ||||
|       if (state.md.validateLink(href)) { | ||||
|         pos = res.pos; | ||||
|       } else { | ||||
|         href = ''; | ||||
|       } | ||||
|     } | ||||
|  | ||||
|     // [link](  <href>  "title"  ) | ||||
|     //                ^^ skipping these spaces | ||||
|     start = pos; | ||||
|     for (; pos < max; pos++) { | ||||
|       code = state.src.charCodeAt(pos); | ||||
|       if (!isSpace(code) && code !== 0x0A) { break; } | ||||
|     } | ||||
|  | ||||
|     // [link](  <href>  "title"  ) | ||||
|     //                  ^^^^^^^ parsing link title | ||||
|     res = state.md.helpers.parseLinkTitle(state.src, pos, state.posMax); | ||||
|     if (pos < max && start !== pos && res.ok) { | ||||
|       title = res.str; | ||||
|       pos = res.pos; | ||||
|  | ||||
|       // [link](  <href>  "title"  ) | ||||
|       //                         ^^ skipping these spaces | ||||
|       for (; pos < max; pos++) { | ||||
|         code = state.src.charCodeAt(pos); | ||||
|         if (!isSpace(code) && code !== 0x0A) { break; } | ||||
|       } | ||||
|     } else { | ||||
|       title = ''; | ||||
|     } | ||||
|  | ||||
|     if (pos >= max || state.src.charCodeAt(pos) !== 0x29/* ) */) { | ||||
|       // parsing a valid shortcut link failed, fallback to reference | ||||
|       parseReference = true; | ||||
|     } | ||||
|     pos++; | ||||
|   } | ||||
|  | ||||
|   if (parseReference) { | ||||
|     // | ||||
|     // Link reference | ||||
|     // | ||||
|     if (typeof state.env.references === 'undefined') { return false; } | ||||
|  | ||||
|     if (pos < max && state.src.charCodeAt(pos) === 0x5B/* [ */) { | ||||
|       start = pos + 1; | ||||
|       pos = state.md.helpers.parseLinkLabel(state, pos); | ||||
|       if (pos >= 0) { | ||||
|         label = state.src.slice(start, pos++); | ||||
|       } else { | ||||
|         pos = labelEnd + 1; | ||||
|       } | ||||
|     } else { | ||||
|       pos = labelEnd + 1; | ||||
|     } | ||||
|  | ||||
|     // covers label === '' and label === undefined | ||||
|     // (collapsed reference link and shortcut reference link respectively) | ||||
|     if (!label) { label = state.src.slice(labelStart, labelEnd); } | ||||
|  | ||||
|     ref = state.env.references[normalizeReference(label)]; | ||||
|     if (!ref) { | ||||
|       state.pos = oldPos; | ||||
|       return false; | ||||
|     } | ||||
|     href = ref.href; | ||||
|     title = ref.title; | ||||
|   } | ||||
|  | ||||
|   // | ||||
|   // We found the end of the link, and know for a fact it's a valid link; | ||||
|   // so all that's left to do is to call tokenizer. | ||||
|   // | ||||
|   if (!silent) { | ||||
|     state.pos = labelStart; | ||||
|     state.posMax = labelEnd; | ||||
|  | ||||
|     token        = state.push('link_open', 'a', 1); | ||||
|     token.attrs  = attrs = [ [ 'href', href ] ]; | ||||
|     if (title) { | ||||
|       attrs.push([ 'title', title ]); | ||||
|     } | ||||
|  | ||||
|     state.md.inline.tokenize(state); | ||||
|  | ||||
|     token        = state.push('link_close', 'a', -1); | ||||
|   } | ||||
|  | ||||
|   state.pos = pos; | ||||
|   state.posMax = max; | ||||
|   return true; | ||||
| }; | ||||
							
								
								
									
										42
									
								
								node_modules/markdown-it/lib/rules_inline/newline.js
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										42
									
								
								node_modules/markdown-it/lib/rules_inline/newline.js
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1,42 @@ | ||||
| // Proceess '\n' | ||||
|  | ||||
| 'use strict'; | ||||
|  | ||||
| var isSpace = require('../common/utils').isSpace; | ||||
|  | ||||
|  | ||||
| module.exports = function newline(state, silent) { | ||||
|   var pmax, max, pos = state.pos; | ||||
|  | ||||
|   if (state.src.charCodeAt(pos) !== 0x0A/* \n */) { return false; } | ||||
|  | ||||
|   pmax = state.pending.length - 1; | ||||
|   max = state.posMax; | ||||
|  | ||||
|   // '  \n' -> hardbreak | ||||
|   // Lookup in pending chars is bad practice! Don't copy to other rules! | ||||
|   // Pending string is stored in concat mode, indexed lookups will cause | ||||
|   // convertion to flat mode. | ||||
|   if (!silent) { | ||||
|     if (pmax >= 0 && state.pending.charCodeAt(pmax) === 0x20) { | ||||
|       if (pmax >= 1 && state.pending.charCodeAt(pmax - 1) === 0x20) { | ||||
|         state.pending = state.pending.replace(/ +$/, ''); | ||||
|         state.push('hardbreak', 'br', 0); | ||||
|       } else { | ||||
|         state.pending = state.pending.slice(0, -1); | ||||
|         state.push('softbreak', 'br', 0); | ||||
|       } | ||||
|  | ||||
|     } else { | ||||
|       state.push('softbreak', 'br', 0); | ||||
|     } | ||||
|   } | ||||
|  | ||||
|   pos++; | ||||
|  | ||||
|   // skip heading spaces for next line | ||||
|   while (pos < max && isSpace(state.src.charCodeAt(pos))) { pos++; } | ||||
|  | ||||
|   state.pos = pos; | ||||
|   return true; | ||||
| }; | ||||
							
								
								
									
										130
									
								
								node_modules/markdown-it/lib/rules_inline/state_inline.js
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										130
									
								
								node_modules/markdown-it/lib/rules_inline/state_inline.js
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1,130 @@ | ||||
| // Inline parser state | ||||
|  | ||||
| 'use strict'; | ||||
|  | ||||
|  | ||||
| var Token          = require('../token'); | ||||
| var isWhiteSpace   = require('../common/utils').isWhiteSpace; | ||||
| var isPunctChar    = require('../common/utils').isPunctChar; | ||||
| var isMdAsciiPunct = require('../common/utils').isMdAsciiPunct; | ||||
|  | ||||
|  | ||||
| function StateInline(src, md, env, outTokens) { | ||||
|   this.src = src; | ||||
|   this.env = env; | ||||
|   this.md = md; | ||||
|   this.tokens = outTokens; | ||||
|  | ||||
|   this.pos = 0; | ||||
|   this.posMax = this.src.length; | ||||
|   this.level = 0; | ||||
|   this.pending = ''; | ||||
|   this.pendingLevel = 0; | ||||
|  | ||||
|   this.cache = {};        // Stores { start: end } pairs. Useful for backtrack | ||||
|                           // optimization of pairs parse (emphasis, strikes). | ||||
|  | ||||
|   this.delimiters = [];   // Emphasis-like delimiters | ||||
| } | ||||
|  | ||||
|  | ||||
| // Flush pending text | ||||
| // | ||||
| StateInline.prototype.pushPending = function () { | ||||
|   var token = new Token('text', '', 0); | ||||
|   token.content = this.pending; | ||||
|   token.level = this.pendingLevel; | ||||
|   this.tokens.push(token); | ||||
|   this.pending = ''; | ||||
|   return token; | ||||
| }; | ||||
|  | ||||
|  | ||||
| // Push new token to "stream". | ||||
| // If pending text exists - flush it as text token | ||||
| // | ||||
| StateInline.prototype.push = function (type, tag, nesting) { | ||||
|   if (this.pending) { | ||||
|     this.pushPending(); | ||||
|   } | ||||
|  | ||||
|   var token = new Token(type, tag, nesting); | ||||
|  | ||||
|   if (nesting < 0) { this.level--; } | ||||
|   token.level = this.level; | ||||
|   if (nesting > 0) { this.level++; } | ||||
|  | ||||
|   this.pendingLevel = this.level; | ||||
|   this.tokens.push(token); | ||||
|   return token; | ||||
| }; | ||||
|  | ||||
|  | ||||
| // Scan a sequence of emphasis-like markers, and determine whether | ||||
| // it can start an emphasis sequence or end an emphasis sequence. | ||||
| // | ||||
| //  - start - position to scan from (it should point at a valid marker); | ||||
| //  - canSplitWord - determine if these markers can be found inside a word | ||||
| // | ||||
| StateInline.prototype.scanDelims = function (start, canSplitWord) { | ||||
|   var pos = start, lastChar, nextChar, count, can_open, can_close, | ||||
|       isLastWhiteSpace, isLastPunctChar, | ||||
|       isNextWhiteSpace, isNextPunctChar, | ||||
|       left_flanking = true, | ||||
|       right_flanking = true, | ||||
|       max = this.posMax, | ||||
|       marker = this.src.charCodeAt(start); | ||||
|  | ||||
|   // treat beginning of the line as a whitespace | ||||
|   lastChar = start > 0 ? this.src.charCodeAt(start - 1) : 0x20; | ||||
|  | ||||
|   while (pos < max && this.src.charCodeAt(pos) === marker) { pos++; } | ||||
|  | ||||
|   count = pos - start; | ||||
|  | ||||
|   // treat end of the line as a whitespace | ||||
|   nextChar = pos < max ? this.src.charCodeAt(pos) : 0x20; | ||||
|  | ||||
|   isLastPunctChar = isMdAsciiPunct(lastChar) || isPunctChar(String.fromCharCode(lastChar)); | ||||
|   isNextPunctChar = isMdAsciiPunct(nextChar) || isPunctChar(String.fromCharCode(nextChar)); | ||||
|  | ||||
|   isLastWhiteSpace = isWhiteSpace(lastChar); | ||||
|   isNextWhiteSpace = isWhiteSpace(nextChar); | ||||
|  | ||||
|   if (isNextWhiteSpace) { | ||||
|     left_flanking = false; | ||||
|   } else if (isNextPunctChar) { | ||||
|     if (!(isLastWhiteSpace || isLastPunctChar)) { | ||||
|       left_flanking = false; | ||||
|     } | ||||
|   } | ||||
|  | ||||
|   if (isLastWhiteSpace) { | ||||
|     right_flanking = false; | ||||
|   } else if (isLastPunctChar) { | ||||
|     if (!(isNextWhiteSpace || isNextPunctChar)) { | ||||
|       right_flanking = false; | ||||
|     } | ||||
|   } | ||||
|  | ||||
|   if (!canSplitWord) { | ||||
|     can_open  = left_flanking  && (!right_flanking || isLastPunctChar); | ||||
|     can_close = right_flanking && (!left_flanking  || isNextPunctChar); | ||||
|   } else { | ||||
|     can_open  = left_flanking; | ||||
|     can_close = right_flanking; | ||||
|   } | ||||
|  | ||||
|   return { | ||||
|     can_open:  can_open, | ||||
|     can_close: can_close, | ||||
|     length:    count | ||||
|   }; | ||||
| }; | ||||
|  | ||||
|  | ||||
| // re-export Token class to use in block rules | ||||
| StateInline.prototype.Token = Token; | ||||
|  | ||||
|  | ||||
| module.exports = StateInline; | ||||
							
								
								
									
										117
									
								
								node_modules/markdown-it/lib/rules_inline/strikethrough.js
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										117
									
								
								node_modules/markdown-it/lib/rules_inline/strikethrough.js
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1,117 @@ | ||||
| // ~~strike through~~ | ||||
| // | ||||
| 'use strict'; | ||||
|  | ||||
|  | ||||
| // Insert each marker as a separate text token, and add it to delimiter list | ||||
| // | ||||
| module.exports.tokenize = function strikethrough(state, silent) { | ||||
|   var i, scanned, token, len, ch, | ||||
|       start = state.pos, | ||||
|       marker = state.src.charCodeAt(start); | ||||
|  | ||||
|   if (silent) { return false; } | ||||
|  | ||||
|   if (marker !== 0x7E/* ~ */) { return false; } | ||||
|  | ||||
|   scanned = state.scanDelims(state.pos, true); | ||||
|   len = scanned.length; | ||||
|   ch = String.fromCharCode(marker); | ||||
|  | ||||
|   if (len < 2) { return false; } | ||||
|  | ||||
|   if (len % 2) { | ||||
|     token         = state.push('text', '', 0); | ||||
|     token.content = ch; | ||||
|     len--; | ||||
|   } | ||||
|  | ||||
|   for (i = 0; i < len; i += 2) { | ||||
|     token         = state.push('text', '', 0); | ||||
|     token.content = ch + ch; | ||||
|  | ||||
|     state.delimiters.push({ | ||||
|       marker: marker, | ||||
|       jump:   i, | ||||
|       token:  state.tokens.length - 1, | ||||
|       level:  state.level, | ||||
|       end:    -1, | ||||
|       open:   scanned.can_open, | ||||
|       close:  scanned.can_close | ||||
|     }); | ||||
|   } | ||||
|  | ||||
|   state.pos += scanned.length; | ||||
|  | ||||
|   return true; | ||||
| }; | ||||
|  | ||||
|  | ||||
| // Walk through delimiter list and replace text tokens with tags | ||||
| // | ||||
| module.exports.postProcess = function strikethrough(state) { | ||||
|   var i, j, | ||||
|       startDelim, | ||||
|       endDelim, | ||||
|       token, | ||||
|       loneMarkers = [], | ||||
|       delimiters = state.delimiters, | ||||
|       max = state.delimiters.length; | ||||
|  | ||||
|   for (i = 0; i < max; i++) { | ||||
|     startDelim = delimiters[i]; | ||||
|  | ||||
|     if (startDelim.marker !== 0x7E/* ~ */) { | ||||
|       continue; | ||||
|     } | ||||
|  | ||||
|     if (startDelim.end === -1) { | ||||
|       continue; | ||||
|     } | ||||
|  | ||||
|     endDelim = delimiters[startDelim.end]; | ||||
|  | ||||
|     token         = state.tokens[startDelim.token]; | ||||
|     token.type    = 's_open'; | ||||
|     token.tag     = 's'; | ||||
|     token.nesting = 1; | ||||
|     token.markup  = '~~'; | ||||
|     token.content = ''; | ||||
|  | ||||
|     token         = state.tokens[endDelim.token]; | ||||
|     token.type    = 's_close'; | ||||
|     token.tag     = 's'; | ||||
|     token.nesting = -1; | ||||
|     token.markup  = '~~'; | ||||
|     token.content = ''; | ||||
|  | ||||
|     if (state.tokens[endDelim.token - 1].type === 'text' && | ||||
|         state.tokens[endDelim.token - 1].content === '~') { | ||||
|  | ||||
|       loneMarkers.push(endDelim.token - 1); | ||||
|     } | ||||
|   } | ||||
|  | ||||
|   // If a marker sequence has an odd number of characters, it's splitted | ||||
|   // like this: `~~~~~` -> `~` + `~~` + `~~`, leaving one marker at the | ||||
|   // start of the sequence. | ||||
|   // | ||||
|   // So, we have to move all those markers after subsequent s_close tags. | ||||
|   // | ||||
|   while (loneMarkers.length) { | ||||
|     i = loneMarkers.pop(); | ||||
|     j = i + 1; | ||||
|  | ||||
|     while (j < state.tokens.length && state.tokens[j].type === 's_close') { | ||||
|       j++; | ||||
|     } | ||||
|  | ||||
|     j--; | ||||
|  | ||||
|     if (i !== j) { | ||||
|       token = state.tokens[j]; | ||||
|       state.tokens[j] = state.tokens[i]; | ||||
|       state.tokens[i] = token; | ||||
|     } | ||||
|   } | ||||
| }; | ||||
							
								
								
									
										89
									
								
								node_modules/markdown-it/lib/rules_inline/text.js
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										89
									
								
								node_modules/markdown-it/lib/rules_inline/text.js
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1,89 @@ | ||||
| // Skip text characters for text token, place those to pending buffer | ||||
| // and increment current pos | ||||
|  | ||||
| 'use strict'; | ||||
|  | ||||
|  | ||||
| // Rule to skip pure text | ||||
| // '{}$%@~+=:' reserved for extentions | ||||
|  | ||||
| // !, ", #, $, %, &, ', (, ), *, +, ,, -, ., /, :, ;, <, =, >, ?, @, [, \, ], ^, _, `, {, |, }, or ~ | ||||
|  | ||||
| // !!!! Don't confuse with "Markdown ASCII Punctuation" chars | ||||
| // http://spec.commonmark.org/0.15/#ascii-punctuation-character | ||||
| function isTerminatorChar(ch) { | ||||
|   switch (ch) { | ||||
|     case 0x0A/* \n */: | ||||
|     case 0x21/* ! */: | ||||
|     case 0x23/* # */: | ||||
|     case 0x24/* $ */: | ||||
|     case 0x25/* % */: | ||||
|     case 0x26/* & */: | ||||
|     case 0x2A/* * */: | ||||
|     case 0x2B/* + */: | ||||
|     case 0x2D/* - */: | ||||
|     case 0x3A/* : */: | ||||
|     case 0x3C/* < */: | ||||
|     case 0x3D/* = */: | ||||
|     case 0x3E/* > */: | ||||
|     case 0x40/* @ */: | ||||
|     case 0x5B/* [ */: | ||||
|     case 0x5C/* \ */: | ||||
|     case 0x5D/* ] */: | ||||
|     case 0x5E/* ^ */: | ||||
|     case 0x5F/* _ */: | ||||
|     case 0x60/* ` */: | ||||
|     case 0x7B/* { */: | ||||
|     case 0x7D/* } */: | ||||
|     case 0x7E/* ~ */: | ||||
|       return true; | ||||
|     default: | ||||
|       return false; | ||||
|   } | ||||
| } | ||||
|  | ||||
| module.exports = function text(state, silent) { | ||||
|   var pos = state.pos; | ||||
|  | ||||
|   while (pos < state.posMax && !isTerminatorChar(state.src.charCodeAt(pos))) { | ||||
|     pos++; | ||||
|   } | ||||
|  | ||||
|   if (pos === state.pos) { return false; } | ||||
|  | ||||
|   if (!silent) { state.pending += state.src.slice(state.pos, pos); } | ||||
|  | ||||
|   state.pos = pos; | ||||
|  | ||||
|   return true; | ||||
| }; | ||||
|  | ||||
| // Alternative implementation, for memory. | ||||
| // | ||||
| // It costs 10% of performance, but allows extend terminators list, if place it | ||||
| // to `ParcerInline` property. Probably, will switch to it sometime, such | ||||
| // flexibility required. | ||||
|  | ||||
| /* | ||||
| var TERMINATOR_RE = /[\n!#$%&*+\-:<=>@[\\\]^_`{}~]/; | ||||
|  | ||||
| module.exports = function text(state, silent) { | ||||
|   var pos = state.pos, | ||||
|       idx = state.src.slice(pos).search(TERMINATOR_RE); | ||||
|  | ||||
|   // first char is terminator -> empty text | ||||
|   if (idx === 0) { return false; } | ||||
|  | ||||
|   // no terminator -> text till end of string | ||||
|   if (idx < 0) { | ||||
|     if (!silent) { state.pending += state.src.slice(pos); } | ||||
|     state.pos = state.src.length; | ||||
|     return true; | ||||
|   } | ||||
|  | ||||
|   if (!silent) { state.pending += state.src.slice(pos, pos + idx); } | ||||
|  | ||||
|   state.pos += idx; | ||||
|  | ||||
|   return true; | ||||
| };*/ | ||||
							
								
								
									
										33
									
								
								node_modules/markdown-it/lib/rules_inline/text_collapse.js
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										33
									
								
								node_modules/markdown-it/lib/rules_inline/text_collapse.js
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1,33 @@ | ||||
| // 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; | ||||
|   } | ||||
| }; | ||||
		Reference in New Issue
	
	Block a user
	 tatianamac
					tatianamac