in src/commonMain/kotlin/org/intellij/markdown/parser/sequentialparsers/impl/InlineLinkParser.kt [34:73]
fun parseInlineLink(iterator: TokensCache.Iterator): LocalParsingResult? {
val startIndex = iterator.index
var it = iterator
val linkText = LinkParserUtil.parseLinkText(it)
?: return null
it = linkText.iteratorPosition
if (it.rawLookup(1) != MarkdownTokenTypes.LPAREN) {
return null
}
it = it.advance().advance()
if (it.type == MarkdownTokenTypes.EOL) {
it = it.advance()
}
val linkDestination = LinkParserUtil.parseLinkDestination(it)
if (linkDestination != null) {
it = linkDestination.iteratorPosition.advance()
if (it.type == MarkdownTokenTypes.EOL) {
it = it.advance()
}
}
val linkTitle = LinkParserUtil.parseLinkTitle(it)
if (linkTitle != null) {
it = linkTitle.iteratorPosition.advance()
if (it.type == MarkdownTokenTypes.EOL) {
it = it.advance()
}
}
if (it.type != MarkdownTokenTypes.RPAREN) {
return null
}
return LocalParsingResult(it,
linkText.parsedNodes
+ (linkDestination?.parsedNodes ?: emptyList())
+ (linkTitle?.parsedNodes ?: emptyList())
+ SequentialParser.Node(startIndex..it.index + 1, MarkdownElementTypes.INLINE_LINK),
linkText.rangesToProcessFurther)
}