@mapbox/jsxtreme-markdown
Version:
Transform Markdown into JSX or React component modules
71 lines (57 loc) • 1.24 kB
JavaScript
;
module.exports = thematicBreak;
var tab = '\t';
var lineFeed = '\n';
var space = ' ';
var asterisk = '*';
var dash = '-';
var underscore = '_';
var maxCount = 3;
function thematicBreak(eat, value, silent) {
var index = -1;
var length = value.length + 1;
var subvalue = '';
var character;
var marker;
var markerCount;
var queue;
while (++index < length) {
character = value.charAt(index);
if (character !== tab && character !== space) {
break;
}
subvalue += character;
}
if (
character !== asterisk &&
character !== dash &&
character !== underscore
) {
return;
}
marker = character;
subvalue += character;
markerCount = 1;
queue = '';
while (++index < length) {
character = value.charAt(index);
if (character === marker) {
markerCount++;
subvalue += queue + marker;
queue = '';
} else if (character === space) {
queue += character;
} else if (
markerCount >= maxCount &&
(!character || character === lineFeed)
) {
subvalue += queue;
if (silent) {
return true;
}
return eat(subvalue)({ type: 'thematicBreak' });
} else {
return;
}
}
}