123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960 |
- 'use strict'
- var whitespace = require('is-whitespace-character')
- var locate = require('../locate/delete')
- module.exports = strikethrough
- strikethrough.locator = locate
- var tilde = '~'
- var fence = '~~'
- 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) !== tilde ||
- value.charAt(1) !== 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 === tilde &&
- previous === tilde &&
- (!preceding || !whitespace(preceding))
- ) {
- /* istanbul ignore if - never used (yet) */
- if (silent) {
- return true
- }
- return eat(fence + subvalue + fence)({
- type: 'delete',
- children: self.tokenizeInline(subvalue, now)
- })
- }
- subvalue += previous
- preceding = previous
- previous = character
- }
- }
|