override fun doProcessToken()

in src/commonMain/kotlin/org/intellij/markdown/parser/markerblocks/impl/SetextHeaderMarkerBlock.kt [36:61]


    override fun doProcessToken(pos: LookaheadText.Position,
                                currentConstraints: MarkdownConstraints): MarkerBlock.ProcessingResult {
        if (pos.offsetInCurrentLine != -1) {
            return MarkerBlock.ProcessingResult.CANCEL
        }

        val startSpaces = pos.charsToNonWhitespace()
                ?: return MarkerBlock.ProcessingResult(MarkerBlock.ClosingAction.DROP, MarkerBlock.ClosingAction.DROP, MarkerBlock.EventAction.PROPAGATE)

        val setextMarkerStart = pos.nextPosition(startSpaces)
        if (setextMarkerStart?.char == '-') {
            nodeType = MarkdownElementTypes.SETEXT_2
        }

        val setextMarkerStartOffset = setextMarkerStart?.offset ?: pos.offset
        val markerNodeType = if (nodeType == MarkdownElementTypes.SETEXT_2)
            MarkdownTokenTypes.SETEXT_2
        else
            MarkdownTokenTypes.SETEXT_1

        contentMarker.done(MarkdownTokenTypes.SETEXT_CONTENT)
        productionHolder.addProduction(listOf(SequentialParser.Node(
                setextMarkerStartOffset..pos.nextLineOrEofOffset, markerNodeType)))
        scheduleProcessingResult(pos.nextLineOrEofOffset, MarkerBlock.ProcessingResult.DEFAULT)
        return MarkerBlock.ProcessingResult.CANCEL
    }