Browse Source

Fix delimiter nesting in render

pull/356/head
Yuki Izumi 8 years ago
parent
commit
f446f6d42a
No known key found for this signature in database GPG Key ID: 44A3D2C95E26BB14
  1. 18
      lib/rules_inline/emphasis.js

18
lib/rules_inline/emphasis.js

@ -77,7 +77,7 @@ module.exports.postProcess = function emphasis(state) {
delimiters = state.delimiters,
max = state.delimiters.length;
for (i = 0; i < max; i++) {
for (i = max - 1; i >= 0; i--) {
startDelim = delimiters[i];
if (startDelim.marker !== 0x5F/* _ */ && startDelim.marker !== 0x2A/* * */) {
@ -96,11 +96,11 @@ module.exports.postProcess = function emphasis(state) {
//
// `<em><em>whatever</em></em>` -> `<strong>whatever</strong>`
//
isStrong = i + 1 < max &&
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;
isStrong = i - 1 >= 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);
@ -119,9 +119,9 @@ module.exports.postProcess = function emphasis(state) {
token.content = '';
if (isStrong) {
state.tokens[delimiters[i + 1].token].content = '';
state.tokens[delimiters[startDelim.end - 1].token].content = '';
i++;
state.tokens[delimiters[i - 1].token].content = '';
state.tokens[delimiters[startDelim.end + 1].token].content = '';
i--;
}
}
};

Loading…
Cancel
Save