packages/remark-parse/lib/tokenize/paragraph.js
function paragraph(eat, value, silent) {
  var self = this
  var settings = self.options
  var commonmark = settings.commonmark
  var gfm = settings.gfm
  var tokenizers = self.blockTokenizers
  var interruptors = self.interruptParagraph
  var index = value.indexOf(lineFeed)
  var length = value.length
  var position
  var subvalue
  var character
  var size
  var now

  while (index < length) {
    // Eat everything if there’s no following newline.
    if (index === -1) {
      index = length
      break
    }

    // Stop if the next character is NEWLINE.
    if (value.charAt(index + 1) === lineFeed) {
      break
    }

    // In commonmark-mode, following indented lines are part of the paragraph.
    if (commonmark) {
      size = 0
      position = index + 1

      while (position < length) {
        character = value.charAt(position)

        if (character === tab) {
          size = tabSize
          break
        } else if (character === space) {
          size++
        } else {
          break
        }

        position++
      }

      if (size >= tabSize && character !== lineFeed) {
        index = value.indexOf(lineFeed, index + 1)
        continue
      }
    }

    subvalue = value.slice(index + 1)

    // Check if the following code contains a possible block.
    if (interrupt(interruptors, tokenizers, self, [eat, subvalue, true])) {
      break
    }

    // Break if the following line starts a list, when already in a list, or
    // when in commonmark, or when in gfm mode and the bullet is *not* numeric.
    if (
      tokenizers.list.call(self, eat, subvalue, true) &&
      (self.inList ||
        commonmark ||
        (gfm && !decimal(trim.left(subvalue).charAt(0))))
    ) {
      break
    }

    position = index
    index = value.indexOf(lineFeed, index + 1)

    if (index !== -1 && trim(value.slice(position, index)) === '') {
      index = position
      break
    }
  }

  subvalue = value.slice(0, index)

  if (trim(subvalue) === '') {
    eat(subvalue)

    return null
  }

  /* istanbul ignore if - never used (yet) */
  if (silent) {
    return true
  }

  now = eat.now()
  subvalue = trimTrailingLines(subvalue)

  return eat(subvalue)({
    type: 'paragraph',
    children: self.tokenizeInline(subvalue, now)
  })
}
function paragraph(eat, value, silent) {
  var self = this
  var settings = self.options
  var commonmark = settings.commonmark
  var gfm = settings.gfm
  var tokenizers = self.blockTokenizers
  var interruptors = self.interruptParagraph
  var index = value.indexOf(lineFeed)
  var length = value.length
  var position
  var subvalue
  var character
  var size
  var now

  while (index < length) {
    // Eat everything if there’s no following newline.
    if (index === -1) {
      index = length
      break
    }

    // Stop if the next character is NEWLINE.
    if (value.charAt(index + 1) === lineFeed) {
      break
    }

    // In commonmark-mode, following indented lines are part of the paragraph.
    if (commonmark) {
      size = 0
      position = index + 1

      while (position < length) {
        character = value.charAt(position)

        if (character === tab) {
          size = tabSize
          break
        } else if (character === space) {
          size++
        } else {
          break
        }

        position++
      }

      if (size >= tabSize && character !== lineFeed) {
        index = value.indexOf(lineFeed, index + 1)
        continue
      }
    }

    subvalue = value.slice(index + 1)

    // Check if the following code contains a possible block.
    if (interrupt(interruptors, tokenizers, self, [eat, subvalue, true])) {
      break
    }

    // Break if the following line starts a list, when already in a list, or
    // when in commonmark, or when in gfm mode and the bullet is *not* numeric.
    if (
      tokenizers.list.call(self, eat, subvalue, true) &&
      (self.inList ||
        commonmark ||
        (gfm && !decimal(trim.left(subvalue).charAt(0))))
    ) {
      break
    }

    position = index
    index = value.indexOf(lineFeed, index + 1)

    if (index !== -1 && trim(value.slice(position, index)) === '') {
      index = position
      break
    }
  }

  subvalue = value.slice(0, index)

  if (trim(subvalue) === '') {
    eat(subvalue)

    return null
  }

  /* istanbul ignore if - never used (yet) */
  if (silent) {
    return true
  }

  now = eat.now()
  subvalue = trimTrailingLines(subvalue)

  return eat(subvalue)({
    type: 'paragraph',
    children: self.tokenizeInline(subvalue, now)
  })
}
function paragraph ( eat , value , silent ) { var self = this var settings = self . options var commonmark = settings . commonmark var gfm = settings . gfm var tokenizers = self . blockTokenizers var interruptors = self . interruptParagraph var index = value . indexOf ( lineFeed ) var length = value . length var position var subvalue var character var size var now while ( index < length ) { // Eat everything if there’s no following newline. if ( index === - 1 ) { index = length break } // Stop if the next character is NEWLINE. if ( value . charAt ( index + 1 ) === lineFeed ) { break } // In commonmark-mode, following indented lines are part of the paragraph. if ( commonmark ) { size = 0 position = index + 1 while ( position < length ) { character = value . charAt ( position ) if ( character === tab ) { size = tabSize break } else if ( character === space ) { size ++ } else { break } position ++ } if ( size >= tabSize && character !== lineFeed ) { index = value . indexOf ( lineFeed , index + 1 ) continue } } subvalue = value . slice ( index + 1 ) // Check if the following code contains a possible block. if ( interrupt ( interruptors , tokenizers , self , [ eat , subvalue , true ] ) ) { break } // Break if the following line starts a list, when already in a list, or // when in commonmark, or when in gfm mode and the bullet is *not* numeric. if ( tokenizers . list . call ( self , eat , subvalue , true ) && ( self . inList || commonmark || ( gfm && ! decimal ( trim . left ( subvalue ) . charAt ( 0 ) ) ) ) ) { break } position = index index = value . indexOf ( lineFeed , index + 1 ) if ( index !== - 1 && trim ( value . slice ( position , index ) ) === '' ) { index = position break } } subvalue = value . slice ( 0 , index ) if ( trim ( subvalue ) === '' ) { eat ( subvalue ) return null } /* istanbul ignore if - never used (yet) */ if ( silent ) { return true } now = eat . now ( ) subvalue = trimTrailingLines ( subvalue ) return eat ( subvalue ) ( { type : 'paragraph' , children : self . tokenizeInline ( subvalue , now ) } ) }
Tokenise paragraph.
Tokenise paragraph .