| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384 |
- 'use strict';
- var trim = require('trim');
- var whitespace = require('is-whitespace-character');
- var locate = require('../locate/strong');
- module.exports = strong;
- strong.locator = locate;
- var C_ASTERISK = '*';
- var C_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 prev;
- if (
- (character !== C_ASTERISK && character !== C_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) {
- prev = character;
- character = value.charAt(index);
- if (
- character === marker &&
- value.charAt(index + 1) === marker &&
- (!pedantic || !whitespace(prev))
- ) {
- 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 === '\\') {
- queue += character;
- character = value.charAt(++index);
- }
- queue += character;
- index++;
- }
- }
|