| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485 |
- '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 C_ASTERISK = '*';
- var C_UNDERSCORE = '_';
- 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 prev;
- if (character !== C_ASTERISK && character !== C_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) {
- prev = character;
- character = value.charAt(index);
- if (character === marker && (!pedantic || !whitespace(prev))) {
- character = value.charAt(++index);
- if (character !== marker) {
- if (!trim(queue) || prev === marker) {
- return;
- }
- if (!pedantic && marker === C_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 === '\\') {
- queue += character;
- character = value.charAt(++index);
- }
- queue += character;
- index++;
- }
- }
|