in src/org/jetbrains/r/rmarkdown/PatchingLexer.kt [26:72]
override fun processToken() {
if (delegate.tokenType === FenceLangType) {
val fenceType: IElementType = provideFence(tokenSequence) ?: return
queue.add(getTokenData())
delegate.advance()
if (delegate.tokenType != MARKDOWN_EOL) {
return
}
queue.add(getTokenData())
val start = delegate.tokenEnd
val state = delegate.state
var end = start
var eol: TokenData? = null
val restore = ArrayList<TokenData>()
while(true) {
delegate.advance()
val cur = getTokenData()
when(cur.type) {
null -> {
queue.addAll(restore)
return
}
FenceEndType -> {
if (end - start > 0) {
queue.add(TokenData(fenceType, start, end, state))
}
if (eol != null) queue.add(eol)
return
}
MARKDOWN_EOL -> {
end = cur.start
eol = cur
}
else -> {
if (cur.type == WhiteSpaceType && bufferSequence.subSequence(cur.start, cur.end).contains('>')) {
queue.addAll(restore)
return
}
end = cur.end
}
}
restore.add(cur)
}
}
}