12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970 |
- 'use strict'
- 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
- }
- }
- }
|