| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970 |
- 'use strict';
- module.exports = thematicBreak;
- var C_NEWLINE = '\n';
- var C_TAB = '\t';
- var C_SPACE = ' ';
- var C_ASTERISK = '*';
- var C_UNDERSCORE = '_';
- var C_DASH = '-';
- var THEMATIC_BREAK_MARKER_COUNT = 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 !== C_TAB && character !== C_SPACE) {
- break;
- }
- subvalue += character;
- }
- if (
- character !== C_ASTERISK &&
- character !== C_DASH &&
- character !== C_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 === C_SPACE) {
- queue += character;
- } else if (
- markerCount >= THEMATIC_BREAK_MARKER_COUNT &&
- (!character || character === C_NEWLINE)
- ) {
- subvalue += queue;
- if (silent) {
- return true;
- }
- return eat(subvalue)({type: 'thematicBreak'});
- } else {
- return;
- }
- }
- }
|