diff options
author | Ignat Beresnev <ignat.beresnev@jetbrains.com> | 2023-11-10 11:46:54 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2023-11-10 11:46:54 +0100 |
commit | 8e5c63d035ef44a269b8c43430f43f5c8eebfb63 (patch) | |
tree | 1b915207b2b9f61951ddbf0ff2e687efd053d555 /plugins/templating/src/main/kotlin/templates/SubstitutionCommandHandler.kt | |
parent | a44efd4ba0c2e4ab921ff75e0f53fc9335aa79db (diff) | |
download | dokka-8e5c63d035ef44a269b8c43430f43f5c8eebfb63.tar.gz dokka-8e5c63d035ef44a269b8c43430f43f5c8eebfb63.tar.bz2 dokka-8e5c63d035ef44a269b8c43430f43f5c8eebfb63.zip |
Restructure the project to utilize included builds (#3174)
* Refactor and simplify artifact publishing
* Update Gradle to 8.4
* Refactor and simplify convention plugins and build scripts
Fixes #3132
---------
Co-authored-by: Adam <897017+aSemy@users.noreply.github.com>
Co-authored-by: Oleg Yukhnevich <whyoleg@gmail.com>
Diffstat (limited to 'plugins/templating/src/main/kotlin/templates/SubstitutionCommandHandler.kt')
-rw-r--r-- | plugins/templating/src/main/kotlin/templates/SubstitutionCommandHandler.kt | 71 |
1 files changed, 0 insertions, 71 deletions
diff --git a/plugins/templating/src/main/kotlin/templates/SubstitutionCommandHandler.kt b/plugins/templating/src/main/kotlin/templates/SubstitutionCommandHandler.kt deleted file mode 100644 index 0c030439..00000000 --- a/plugins/templating/src/main/kotlin/templates/SubstitutionCommandHandler.kt +++ /dev/null @@ -1,71 +0,0 @@ -/* - * Copyright 2014-2023 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license. - */ - -package org.jetbrains.dokka.templates - -import org.jetbrains.dokka.base.templating.Command -import org.jetbrains.dokka.base.templating.SubstitutionCommand -import org.jetbrains.dokka.plugability.DokkaContext -import org.jetbrains.dokka.plugability.plugin -import org.jetbrains.dokka.plugability.query -import org.jsoup.nodes.DataNode -import org.jsoup.nodes.Element -import org.jsoup.nodes.Node -import org.jsoup.nodes.TextNode -import java.io.File - -public class SubstitutionCommandHandler(context: DokkaContext) : CommandHandler { - - override fun handleCommandAsTag(command: Command, body: Element, input: File, output: File) { - command as SubstitutionCommand - val childrenCopy = body.children().toList() - substitute(childrenCopy, TemplatingContext(input, output, childrenCopy, command)) - - val position = body.elementSiblingIndex() - val parent = body.parent() - body.remove() - - parent?.insertChildren(position, childrenCopy) - } - - override fun handleCommandAsComment(command: Command, body: List<Node>, input: File, output: File) { - command as SubstitutionCommand - substitute(body, TemplatingContext(input, output, body, command)) - } - - override fun canHandle(command: Command): Boolean = command is SubstitutionCommand - - override fun finish(output: File) { } - - private val substitutors = context.plugin<TemplatingPlugin>().query { substitutor } - - private fun findSubstitution(commandContext: TemplatingContext<SubstitutionCommand>, match: MatchResult): String = - substitutors.asSequence().mapNotNull { it.trySubstitute(commandContext, match) }.firstOrNull() ?: match.value - - private fun substitute(elements: List<Node>, commandContext: TemplatingContext<SubstitutionCommand>) { - val regex = commandContext.command.pattern.toRegex() - elements.forEach { it.traverseToSubstitute(regex, commandContext) } - } - - private fun Node.traverseToSubstitute(regex: Regex, commandContext: TemplatingContext<SubstitutionCommand>) { - when (this) { - is TextNode -> replaceWith(TextNode(wholeText.substitute(regex, commandContext))) - is DataNode -> replaceWith(DataNode(wholeData.substitute(regex, commandContext))) - is Element -> { - attributes().forEach { attr(it.key, it.value.substitute(regex, commandContext)) } - childNodes().forEach { it.traverseToSubstitute(regex, commandContext) } - } - } - } - - private fun String.substitute(regex: Regex, commandContext: TemplatingContext<SubstitutionCommand>) = buildString { - var lastOffset = 0 - regex.findAll(this@substitute).forEach { match -> - append(this@substitute, lastOffset, match.range.first) - append(findSubstitution(commandContext, match)) - lastOffset = match.range.last + 1 - } - append(this@substitute, lastOffset, this@substitute.length) - } -} |