in src/commonMain/kotlin/org/intellij/markdown/parser/InlineBuilder.kt [40:71]
override fun createASTNodeOnClosingEvent(event: MyEvent, currentNodeChildren: List<MyASTNodeWrapper>, isTopmostNode: Boolean): MyASTNodeWrapper {
val newNode: ASTNode
val type = event.info.type
val startTokenId = event.info.range.first
val endTokenId = event.info.range.last
val childrenWithWhitespaces = ArrayList<ASTNode>(currentNodeChildren.size)
if (isTopmostNode) {
// Set exitOffset to an unreachable offset pointing to the left.
// This way we ensure that all raw tokens before are included into the current node.
addRawTokens(tokensCache, childrenWithWhitespaces, startTokenId, -1, -1)
}
for (index in 1 until currentNodeChildren.size) {
val prev = currentNodeChildren[index - 1]
val next = currentNodeChildren[index]
childrenWithWhitespaces.add(prev.astNode)
addRawTokens(tokensCache, childrenWithWhitespaces, prev.endTokenIndex - 1, +1, tokensCache.Iterator(next.startTokenIndex).start)
}
if (currentNodeChildren.isNotEmpty()) {
childrenWithWhitespaces.add(currentNodeChildren.last().astNode)
}
if (isTopmostNode) {
addRawTokens(tokensCache, childrenWithWhitespaces, endTokenId - 1, +1, tokensCache.Iterator(endTokenId).start)
}
newNode = nodeBuilder.createCompositeNode(type, childrenWithWhitespaces)
return MyASTNodeWrapper(newNode, startTokenId, endTokenId)
}