Browse Source

Use new emphasis logic in strikethrough

pull/41/head
Vitaly Puzrin 10 years ago
parent
commit
e1f6e3b6f8
  1. 3
      lib/rules_inline/emphasis.js
  2. 34
      lib/rules_inline/strikethrough.js

3
lib/rules_inline/emphasis.js

@ -1,7 +1,8 @@
// Process *this* and _that_ // Process *this* and _that_
//
'use strict'; 'use strict';
var isWhiteSpace = require('../common/utils').isWhiteSpace; var isWhiteSpace = require('../common/utils').isWhiteSpace;
var isPunctChar = require('../common/utils').isPunctChar; var isPunctChar = require('../common/utils').isPunctChar;
var isMdAsciiPunct = require('../common/utils').isMdAsciiPunct; var isMdAsciiPunct = require('../common/utils').isMdAsciiPunct;

34
lib/rules_inline/strikethrough.js

@ -1,10 +1,19 @@
// ~~strike through~~
//
'use strict'; 'use strict';
var isWhiteSpace = require('../common/utils').isWhiteSpace;
var isPunctChar = require('../common/utils').isPunctChar;
var isMdAsciiPunct = require('../common/utils').isMdAsciiPunct;
// parse sequence of markers, // parse sequence of markers,
// "start" should point at a valid marker // "start" should point at a valid marker
function scanDelims(state, start) { function scanDelims(state, start) {
var pos = start, lastChar, nextChar, count, var pos = start, lastChar, nextChar, count,
isLastWhiteSpace, isLastPunctChar,
isNextWhiteSpace, isNextPunctChar,
can_open = true, can_open = true,
can_close = true, can_close = true,
max = state.posMax, max = state.posMax,
@ -18,9 +27,28 @@ function scanDelims(state, start) {
nextChar = pos < max ? state.src.charCodeAt(pos) : -1; nextChar = pos < max ? state.src.charCodeAt(pos) : -1;
// check whitespace conditions isLastPunctChar = lastChar >= 0 &&
if (nextChar === 0x20 || nextChar === 0x0A) { can_open = false; } (isMdAsciiPunct(lastChar) || isPunctChar(String.fromCharCode(lastChar)));
if (lastChar === 0x20 || lastChar === 0x0A) { can_close = false; } isNextPunctChar = nextChar >= 0 &&
(isMdAsciiPunct(nextChar) || isPunctChar(String.fromCharCode(nextChar)));
isLastWhiteSpace = lastChar >= 0 && isWhiteSpace(lastChar);
isNextWhiteSpace = nextChar >= 0 && isWhiteSpace(nextChar);
if (isNextWhiteSpace) {
can_open = false;
} else if (isNextPunctChar) {
if (!(isLastWhiteSpace || isLastPunctChar || lastChar === -1)) {
can_open = false;
}
}
if (isLastWhiteSpace) {
can_close = false;
} else if (isLastPunctChar) {
if (!(isNextWhiteSpace || isNextPunctChar || nextChar === -1)) {
can_close = false;
}
}
return { return {
can_open: can_open, can_open: can_open,

Loading…
Cancel
Save