in src/commonMain/kotlin/org/intellij/markdown/parser/TopLevelBuilder.kt [13:48]
override fun createASTNodeOnClosingEvent(event: TreeBuilder.MyEvent, currentNodeChildren: List<TreeBuilder.MyASTNodeWrapper>, isTopmostNode: Boolean): TreeBuilder.MyASTNodeWrapper {
val newNode: ASTNode
val type = event.info.`type`
val startOffset = event.info.range.first
val endOffset = event.info.range.last
if (type is MarkdownElementType && type.isToken) {
val nodes = nodeBuilder.createLeafNodes(type, startOffset, endOffset)
return TreeBuilder.MyASTNodeWrapper(nodes.first(), startOffset, endOffset)
}
val childrenWithWhitespaces = ArrayList<ASTNode>(currentNodeChildren.size)
// if (currentNodeChildren.isNotEmpty()) {
addRawTokens(childrenWithWhitespaces,
startOffset,
currentNodeChildren.firstOrNull()?.startTokenIndex ?: endOffset)
for (i in 1..currentNodeChildren.size - 1) {
val prev = currentNodeChildren.get(i - 1)
val next = currentNodeChildren.get(i)
childrenWithWhitespaces.add(prev.astNode)
addRawTokens(childrenWithWhitespaces, prev.endTokenIndex, next.startTokenIndex)
}
if (!currentNodeChildren.isEmpty()) {
childrenWithWhitespaces.add(currentNodeChildren.last().astNode)
addRawTokens(childrenWithWhitespaces, currentNodeChildren.last().endTokenIndex, endOffset)
}
// }
newNode = nodeBuilder.createCompositeNode(type, childrenWithWhitespaces)
return TreeBuilder.MyASTNodeWrapper(newNode, startOffset, endOffset)
}