WIP - add extractor, generate snippet_data
This commit is contained in:
98
node_modules/remark-parse/lib/tokenize/code-indented.js
generated
vendored
Normal file
98
node_modules/remark-parse/lib/tokenize/code-indented.js
generated
vendored
Normal file
@ -0,0 +1,98 @@
|
||||
'use strict'
|
||||
|
||||
var repeat = require('repeat-string')
|
||||
var trim = require('trim-trailing-lines')
|
||||
|
||||
module.exports = indentedCode
|
||||
|
||||
var lineFeed = '\n'
|
||||
var tab = '\t'
|
||||
var space = ' '
|
||||
|
||||
var tabSize = 4
|
||||
var codeIndent = repeat(space, tabSize)
|
||||
|
||||
function indentedCode(eat, value, silent) {
|
||||
var index = -1
|
||||
var length = value.length
|
||||
var subvalue = ''
|
||||
var content = ''
|
||||
var subvalueQueue = ''
|
||||
var contentQueue = ''
|
||||
var character
|
||||
var blankQueue
|
||||
var indent
|
||||
|
||||
while (++index < length) {
|
||||
character = value.charAt(index)
|
||||
|
||||
if (indent) {
|
||||
indent = false
|
||||
|
||||
subvalue += subvalueQueue
|
||||
content += contentQueue
|
||||
subvalueQueue = ''
|
||||
contentQueue = ''
|
||||
|
||||
if (character === lineFeed) {
|
||||
subvalueQueue = character
|
||||
contentQueue = character
|
||||
} else {
|
||||
subvalue += character
|
||||
content += character
|
||||
|
||||
while (++index < length) {
|
||||
character = value.charAt(index)
|
||||
|
||||
if (!character || character === lineFeed) {
|
||||
contentQueue = character
|
||||
subvalueQueue = character
|
||||
break
|
||||
}
|
||||
|
||||
subvalue += character
|
||||
content += character
|
||||
}
|
||||
}
|
||||
} else if (
|
||||
character === space &&
|
||||
value.charAt(index + 1) === character &&
|
||||
value.charAt(index + 2) === character &&
|
||||
value.charAt(index + 3) === character
|
||||
) {
|
||||
subvalueQueue += codeIndent
|
||||
index += 3
|
||||
indent = true
|
||||
} else if (character === tab) {
|
||||
subvalueQueue += character
|
||||
indent = true
|
||||
} else {
|
||||
blankQueue = ''
|
||||
|
||||
while (character === tab || character === space) {
|
||||
blankQueue += character
|
||||
character = value.charAt(++index)
|
||||
}
|
||||
|
||||
if (character !== lineFeed) {
|
||||
break
|
||||
}
|
||||
|
||||
subvalueQueue += blankQueue + character
|
||||
contentQueue += character
|
||||
}
|
||||
}
|
||||
|
||||
if (content) {
|
||||
if (silent) {
|
||||
return true
|
||||
}
|
||||
|
||||
return eat(subvalue)({
|
||||
type: 'code',
|
||||
lang: null,
|
||||
meta: null,
|
||||
value: trim(content)
|
||||
})
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user