Sha256: c8542270630f82f6c938962b1f33b3a268db1f8e3580b7863946a18ec8c9c47d

Contents?: true

Size: 1.61 KB

Versions: 23

Compression:

Stored size: 1.61 KB

Contents

'use strict'

var trim = require('trim')
var whitespace = require('is-whitespace-character')
var locate = require('../locate/strong')

module.exports = strong
strong.locator = locate

var backslash = '\\'
var asterisk = '*'
var underscore = '_'

function strong(eat, value, silent) {
  var self = this
  var index = 0
  var character = value.charAt(index)
  var now
  var pedantic
  var marker
  var queue
  var subvalue
  var length
  var previous

  if (
    (character !== asterisk && character !== underscore) ||
    value.charAt(++index) !== character
  ) {
    return
  }

  pedantic = self.options.pedantic
  marker = character
  subvalue = marker + marker
  length = value.length
  index++
  queue = ''
  character = ''

  if (pedantic && whitespace(value.charAt(index))) {
    return
  }

  while (index < length) {
    previous = character
    character = value.charAt(index)

    if (
      character === marker &&
      value.charAt(index + 1) === marker &&
      (!pedantic || !whitespace(previous))
    ) {
      character = value.charAt(index + 2)

      if (character !== marker) {
        if (!trim(queue)) {
          return
        }

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

        now = eat.now()
        now.column += 2
        now.offset += 2

        return eat(subvalue + queue + subvalue)({
          type: 'strong',
          children: self.tokenizeInline(queue, now)
        })
      }
    }

    if (!pedantic && character === backslash) {
      queue += character
      character = value.charAt(++index)
    }

    queue += character
    index++
  }
}

Version data entries

23 entries across 23 versions & 1 rubygems

Version Path
trusty-cms-5.0.7 node_modules/remark-parse/lib/tokenize/strong.js
trusty-cms-5.0.6 node_modules/remark-parse/lib/tokenize/strong.js
trusty-cms-5.0.5 node_modules/remark-parse/lib/tokenize/strong.js
trusty-cms-5.0.4 node_modules/remark-parse/lib/tokenize/strong.js
trusty-cms-5.0.3 node_modules/remark-parse/lib/tokenize/strong.js
trusty-cms-5.0.2 node_modules/remark-parse/lib/tokenize/strong.js
trusty-cms-5.0.1 node_modules/remark-parse/lib/tokenize/strong.js
trusty-cms-4.3.5 node_modules/remark-parse/lib/tokenize/strong.js
trusty-cms-5.0.0 node_modules/remark-parse/lib/tokenize/strong.js
trusty-cms-4.3.4 node_modules/remark-parse/lib/tokenize/strong.js
trusty-cms-4.3.3 node_modules/remark-parse/lib/tokenize/strong.js
trusty-cms-4.3.2 node_modules/remark-parse/lib/tokenize/strong.js
trusty-cms-4.3.1 node_modules/remark-parse/lib/tokenize/strong.js
trusty-cms-4.3 node_modules/remark-parse/lib/tokenize/strong.js
trusty-cms-4.2.3 node_modules/remark-parse/lib/tokenize/strong.js
trusty-cms-4.2.2 node_modules/remark-parse/lib/tokenize/strong.js
trusty-cms-4.2.1 node_modules/remark-parse/lib/tokenize/strong.js
trusty-cms-4.2 node_modules/remark-parse/lib/tokenize/strong.js
trusty-cms-4.1.9 node_modules/remark-parse/lib/tokenize/strong.js
trusty-cms-4.1.8 node_modules/remark-parse/lib/tokenize/strong.js