blob: 3513634b9557d98eaefa74e7d14e2f7a4613d785 [file] [log] [blame]
'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
}
}