markdown-it
Advanced tools
Comparing version 12.2.0 to 12.3.0
@@ -260,3 +260,3 @@ /** | ||
* Renderer.renderInline(tokens, options, env) -> String | ||
* - tokens (Array): list on block tokens to renter | ||
* - tokens (Array): list on block tokens to render | ||
* - options (Object): params of parser instance | ||
@@ -288,3 +288,3 @@ * - env (Object): additional data from parsed input (references, for example) | ||
* Renderer.renderInlineAsText(tokens, options, env) -> String | ||
* - tokens (Array): list on block tokens to renter | ||
* - tokens (Array): list on block tokens to render | ||
* - options (Object): params of parser instance | ||
@@ -316,3 +316,3 @@ * - env (Object): additional data from parsed input (references, for example) | ||
* Renderer.render(tokens, options, env) -> String | ||
* - tokens (Array): list on block tokens to renter | ||
* - tokens (Array): list on block tokens to render | ||
* - options (Object): params of parser instance | ||
@@ -319,0 +319,0 @@ * - env (Object): additional data from parsed input (references, for example) |
@@ -12,5 +12,24 @@ // For each opening emphasis-like marker find a matching closing one | ||
if (!max) return; | ||
// headerIdx is the first delimiter of the current (where closer is) delimiter run | ||
var headerIdx = 0; | ||
var lastTokenIdx = -2; // needs any value lower than -1 | ||
var jumps = []; | ||
for (closerIdx = 0; closerIdx < max; closerIdx++) { | ||
closer = delimiters[closerIdx]; | ||
jumps.push(0); | ||
// markers belong to same delimiter run if: | ||
// - they have adjacent tokens | ||
// - AND markers are the same | ||
// | ||
if (delimiters[headerIdx].marker !== closer.marker || lastTokenIdx !== closer.token - 1) { | ||
headerIdx = closerIdx; | ||
} | ||
lastTokenIdx = closer.token; | ||
// Length is only used for emphasis-specific "rule of 3", | ||
@@ -34,10 +53,7 @@ // if it's not defined (in strikethrough or 3rd party plugins), | ||
openerIdx = closerIdx - closer.jump - 1; | ||
openerIdx = headerIdx - jumps[headerIdx] - 1; | ||
// avoid crash if `closer.jump` is pointing outside of the array, see #742 | ||
if (openerIdx < -1) openerIdx = -1; | ||
newMinOpenerIdx = openerIdx; | ||
for (; openerIdx > minOpenerIdx; openerIdx -= opener.jump + 1) { | ||
for (; openerIdx > minOpenerIdx; openerIdx -= jumps[openerIdx] + 1) { | ||
opener = delimiters[openerIdx]; | ||
@@ -72,11 +88,15 @@ | ||
lastJump = openerIdx > 0 && !delimiters[openerIdx - 1].open ? | ||
delimiters[openerIdx - 1].jump + 1 : | ||
jumps[openerIdx - 1] + 1 : | ||
0; | ||
closer.jump = closerIdx - openerIdx + lastJump; | ||
jumps[closerIdx] = closerIdx - openerIdx + lastJump; | ||
jumps[openerIdx] = lastJump; | ||
closer.open = false; | ||
opener.end = closerIdx; | ||
opener.jump = lastJump; | ||
opener.close = false; | ||
newMinOpenerIdx = -1; | ||
// treat next token as start of run, | ||
// it optimizes skips in **<...>**a**<...>** pathological case | ||
lastTokenIdx = -2; | ||
break; | ||
@@ -83,0 +103,0 @@ } |
@@ -32,11 +32,2 @@ // Process *this* and _that_ | ||
// 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. | ||
@@ -95,5 +86,7 @@ // | ||
delimiters[i - 1].end === startDelim.end + 1 && | ||
// check that first two markers match and adjacent | ||
delimiters[i - 1].marker === startDelim.marker && | ||
delimiters[i - 1].token === startDelim.token - 1 && | ||
delimiters[startDelim.end + 1].token === endDelim.token + 1 && | ||
delimiters[i - 1].marker === startDelim.marker; | ||
// check that last two markers are adjacent (we can safely assume they match) | ||
delimiters[startDelim.end + 1].token === endDelim.token + 1; | ||
@@ -100,0 +93,0 @@ ch = String.fromCharCode(startDelim.marker); |
@@ -36,3 +36,2 @@ // ~~strike through~~ | ||
length: 0, // disable "rule of 3" length checks meant for emphasis | ||
jump: i / 2, // for `~~` 1 marker = 2 characters | ||
token: state.tokens.length - 1, | ||
@@ -39,0 +38,0 @@ end: -1, |
{ | ||
"name": "markdown-it", | ||
"version": "12.2.0", | ||
"version": "12.3.0", | ||
"description": "Markdown-it - modern pluggable markdown parser.", | ||
@@ -55,3 +55,3 @@ "keywords": [ | ||
"coveralls": "^3.0.4", | ||
"eslint": "^7.0.0", | ||
"eslint": "^8.4.1", | ||
"express": "^4.14.0", | ||
@@ -72,5 +72,5 @@ "gh-pages": "^3.1.0", | ||
"markdown-it-testgen": "^0.1.3", | ||
"mocha": "^8.0.1", | ||
"mocha": "^9.1.3", | ||
"ndoc": "^6.0.0", | ||
"needle": "^2.5.2", | ||
"needle": "^3.0.0", | ||
"nyc": "^15.0.1", | ||
@@ -82,3 +82,3 @@ "pug-cli": "^1.0.0-alpha6", | ||
"shelljs": "^0.8.4", | ||
"stylus": "^0.54.5", | ||
"stylus": "^0.55.0", | ||
"supertest": "^6.0.1" | ||
@@ -85,0 +85,0 @@ }, |
Sorry, the diff of this file is too big to display
Sorry, the diff of this file is too big to display
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
13732
553061
58