| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960 |
- 'use strict';
- var whitespace = require('is-whitespace-character');
- var locate = require('../locate/delete');
- module.exports = strikethrough;
- strikethrough.locator = locate;
- var C_TILDE = '~';
- var DOUBLE = '~~';
- function strikethrough(eat, value, silent) {
- var self = this;
- var character = '';
- var previous = '';
- var preceding = '';
- var subvalue = '';
- var index;
- var length;
- var now;
- if (
- !self.options.gfm ||
- value.charAt(0) !== C_TILDE ||
- value.charAt(1) !== C_TILDE ||
- whitespace(value.charAt(2))
- ) {
- return;
- }
- index = 1;
- length = value.length;
- now = eat.now();
- now.column += 2;
- now.offset += 2;
- while (++index < length) {
- character = value.charAt(index);
- if (
- character === C_TILDE &&
- previous === C_TILDE &&
- (!preceding || !whitespace(preceding))
- ) {
- /* istanbul ignore if - never used (yet) */
- if (silent) {
- return true;
- }
- return eat(DOUBLE + subvalue + DOUBLE)({
- type: 'delete',
- children: self.tokenizeInline(subvalue, now)
- });
- }
- subvalue += previous;
- preceding = previous;
- previous = character;
- }
- }
|