Sha256: fcbdc8912f89fc8e9da241a76db0a39504fcd733b90256af103b53c4e7d8d1c0

Contents?: true

Size: 1.7 KB

Versions: 23

Compression:

Stored size: 1.7 KB

Contents

'use strict'

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

module.exports = emphasis
emphasis.locator = locate

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

function emphasis(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) {
    return
  }

  pedantic = self.options.pedantic
  subvalue = character
  marker = character
  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 && (!pedantic || !whitespace(previous))) {
      character = value.charAt(++index)

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

        if (!pedantic && marker === underscore && word(character)) {
          queue += marker
          continue
        }

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

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

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

      queue += marker
    }

    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/emphasis.js
trusty-cms-5.0.6 node_modules/remark-parse/lib/tokenize/emphasis.js
trusty-cms-5.0.5 node_modules/remark-parse/lib/tokenize/emphasis.js
trusty-cms-5.0.4 node_modules/remark-parse/lib/tokenize/emphasis.js
trusty-cms-5.0.3 node_modules/remark-parse/lib/tokenize/emphasis.js
trusty-cms-5.0.2 node_modules/remark-parse/lib/tokenize/emphasis.js
trusty-cms-5.0.1 node_modules/remark-parse/lib/tokenize/emphasis.js
trusty-cms-4.3.5 node_modules/remark-parse/lib/tokenize/emphasis.js
trusty-cms-5.0.0 node_modules/remark-parse/lib/tokenize/emphasis.js
trusty-cms-4.3.4 node_modules/remark-parse/lib/tokenize/emphasis.js
trusty-cms-4.3.3 node_modules/remark-parse/lib/tokenize/emphasis.js
trusty-cms-4.3.2 node_modules/remark-parse/lib/tokenize/emphasis.js
trusty-cms-4.3.1 node_modules/remark-parse/lib/tokenize/emphasis.js
trusty-cms-4.3 node_modules/remark-parse/lib/tokenize/emphasis.js
trusty-cms-4.2.3 node_modules/remark-parse/lib/tokenize/emphasis.js
trusty-cms-4.2.2 node_modules/remark-parse/lib/tokenize/emphasis.js
trusty-cms-4.2.1 node_modules/remark-parse/lib/tokenize/emphasis.js
trusty-cms-4.2 node_modules/remark-parse/lib/tokenize/emphasis.js
trusty-cms-4.1.9 node_modules/remark-parse/lib/tokenize/emphasis.js
trusty-cms-4.1.8 node_modules/remark-parse/lib/tokenize/emphasis.js