@mapbox/jsxtreme-markdown
Version:
Transform Markdown into JSX or React component modules
61 lines (50 loc) • 1.16 kB
JavaScript
;
var whitespace = require('is-whitespace-character');
var locate = require('../locate/delete');
module.exports = strikethrough;
strikethrough.locator = locate;
var tilde = '~';
var fence = '~~';
function strikethrough(eat, value, silent) {
var self = this;
var character = '';
var previous = '';
var preceding = '';
var subvalue = '';
var index;
var length;
var now;
if (
!self.options.gfm ||
value.charAt(0) !== tilde ||
value.charAt(1) !== tilde ||
whitespace(value.charAt(2))
) {
return;
}
index = 1;
length = value.length;
now = eat.now();
now.column += 2;
now.offset += 2;
while (++index < length) {
character = value.charAt(index);
if (
character === tilde &&
previous === tilde &&
(!preceding || !whitespace(preceding))
) {
/* istanbul ignore if - never used (yet) */
if (silent) {
return true;
}
return eat(fence + subvalue + fence)({
type: 'delete',
children: self.tokenizeInline(subvalue, now),
});
}
subvalue += previous;
preceding = previous;
previous = character;
}
}