12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485 |
- '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++
- }
- }
|