WIP - add extractor, generate snippet_data
This commit is contained in:
108
node_modules/remark-parse/lib/tokenize/code-inline.js
generated
vendored
Normal file
108
node_modules/remark-parse/lib/tokenize/code-inline.js
generated
vendored
Normal file
@ -0,0 +1,108 @@
|
||||
'use strict'
|
||||
|
||||
var whitespace = require('is-whitespace-character')
|
||||
var locate = require('../locate/code-inline')
|
||||
|
||||
module.exports = inlineCode
|
||||
inlineCode.locator = locate
|
||||
|
||||
var graveAccent = '`'
|
||||
|
||||
function inlineCode(eat, value, silent) {
|
||||
var length = value.length
|
||||
var index = 0
|
||||
var queue = ''
|
||||
var tickQueue = ''
|
||||
var contentQueue
|
||||
var subqueue
|
||||
var count
|
||||
var openingCount
|
||||
var subvalue
|
||||
var character
|
||||
var found
|
||||
var next
|
||||
|
||||
while (index < length) {
|
||||
if (value.charAt(index) !== graveAccent) {
|
||||
break
|
||||
}
|
||||
|
||||
queue += graveAccent
|
||||
index++
|
||||
}
|
||||
|
||||
if (!queue) {
|
||||
return
|
||||
}
|
||||
|
||||
subvalue = queue
|
||||
openingCount = index
|
||||
queue = ''
|
||||
next = value.charAt(index)
|
||||
count = 0
|
||||
|
||||
while (index < length) {
|
||||
character = next
|
||||
next = value.charAt(index + 1)
|
||||
|
||||
if (character === graveAccent) {
|
||||
count++
|
||||
tickQueue += character
|
||||
} else {
|
||||
count = 0
|
||||
queue += character
|
||||
}
|
||||
|
||||
if (count && next !== graveAccent) {
|
||||
if (count === openingCount) {
|
||||
subvalue += queue + tickQueue
|
||||
found = true
|
||||
break
|
||||
}
|
||||
|
||||
queue += tickQueue
|
||||
tickQueue = ''
|
||||
}
|
||||
|
||||
index++
|
||||
}
|
||||
|
||||
if (!found) {
|
||||
if (openingCount % 2 !== 0) {
|
||||
return
|
||||
}
|
||||
|
||||
queue = ''
|
||||
}
|
||||
|
||||
/* istanbul ignore if - never used (yet) */
|
||||
if (silent) {
|
||||
return true
|
||||
}
|
||||
|
||||
contentQueue = ''
|
||||
subqueue = ''
|
||||
length = queue.length
|
||||
index = -1
|
||||
|
||||
while (++index < length) {
|
||||
character = queue.charAt(index)
|
||||
|
||||
if (whitespace(character)) {
|
||||
subqueue += character
|
||||
continue
|
||||
}
|
||||
|
||||
if (subqueue) {
|
||||
if (contentQueue) {
|
||||
contentQueue += subqueue
|
||||
}
|
||||
|
||||
subqueue = ''
|
||||
}
|
||||
|
||||
contentQueue += character
|
||||
}
|
||||
|
||||
return eat(subvalue)({type: 'inlineCode', value: contentQueue})
|
||||
}
|
||||
Reference in New Issue
Block a user