override fun process()

in src/commonMain/kotlin/org/intellij/markdown/flavours/gfm/StrikeThroughDelimiterParser.kt [37:74]


    override fun process(
        tokens: TokensCache,
        iterator: TokensCache.Iterator,
        delimiters: MutableList<Info>,
        result: SequentialParser.ParsingResultBuilder
    ) {
        // Start at the end and move backward, matching tokens
        var index = delimiters.size - 1

        while (index > 0) {
            // Find opening tilde
            if (!delimiters[index].isOpeningTilde()) {
                index -= 1
                continue
            }
            var openerIndex = index
            var closerIndex = delimiters[index].closerIndex

            // Attempt to widen the matched delimiters
            var delimitersMatched = 1
            while (EmphStrongDelimiterParser.areAdjacentSameMarkers(delimiters, openerIndex, closerIndex)) {
                openerIndex -= 1
                closerIndex += 1
                delimitersMatched += 1
            }

            // If 3 or more delimiters are matched, ignore
            if (delimitersMatched < 3) {
                val opener = delimiters[openerIndex]
                val closer = delimiters[closerIndex]

                result.withNode(SequentialParser.Node(opener.position..closer.position + 1, GFMElementTypes.STRIKETHROUGH))
            }

            // Update index
            index = openerIndex - 1
        }
    }