diff --git a/JET-JVM/src/main/kotlin/de/jet/jvm/interchange/ConsoleInterchangeBranch.kt b/JET-JVM/src/main/kotlin/de/jet/jvm/interchange/ConsoleInterchangeBranch.kt index 3f4adc889e..d7e8a5cd17 100644 --- a/JET-JVM/src/main/kotlin/de/jet/jvm/interchange/ConsoleInterchangeBranch.kt +++ b/JET-JVM/src/main/kotlin/de/jet/jvm/interchange/ConsoleInterchangeBranch.kt @@ -2,7 +2,6 @@ package de.jet.jvm.interchange import de.jet.jvm.tool.smart.positioning.Address import de.jet.jvm.tree.TreeBranch -import de.jet.jvm.tree.TreeBranchType /** * This class defines a branch of the console interchange. @@ -25,7 +24,7 @@ class ConsoleInterchangeBranch( * @author Fruxz */ fun getBestMatchFromCommandInput(commandInput: String): ConsoleInterchangeBranch? { - return getBestMatchFromPath(Address(commandInput.replace(" ", "/"))) + return getBestMatchFromPath(Address.address(commandInput.replace(" ", "/"))) } /** @@ -37,7 +36,7 @@ class ConsoleInterchangeBranch( * @author Fruxz */ fun getBestMatchFromCommandInputWithParameters(commandInput: String): Pair { - val (branch, remaining) = getBestMatchFromPathWithRemaining(Address(commandInput.replace(" ", "/"))) + val (branch, remaining) = getBestMatchFromPathWithRemaining(Address.address(commandInput.replace(" ", "/"))) return Pair(branch, remaining.addressString.replace("/", " ").removePrefix(" ")) } diff --git a/JET-JVM/src/main/kotlin/de/jet/jvm/interchange/ConsoleInterchangeConfiguration.kt b/JET-JVM/src/main/kotlin/de/jet/jvm/interchange/ConsoleInterchangeConfiguration.kt index 6619b9fa3d..24e951ceb4 100644 --- a/JET-JVM/src/main/kotlin/de/jet/jvm/interchange/ConsoleInterchangeConfiguration.kt +++ b/JET-JVM/src/main/kotlin/de/jet/jvm/interchange/ConsoleInterchangeConfiguration.kt @@ -1,5 +1,6 @@ package de.jet.jvm.interchange +import de.jet.jvm.extension.input.buildConsoleInterchange import de.jet.jvm.extension.switchResult /** @@ -27,14 +28,14 @@ data class ConsoleInterchangeConfiguration( fun executeCommand(input: String): Boolean { fun executeBase(input: String): Boolean { - interchanges.forEach { - it.getBestMatchFromCommandInputWithParameters(input).let { result -> - result.first.let { branch -> - if (branch != null) { - branch.content?.let { content -> - content.invoke(result.second) - return true - } + buildConsoleInterchange("") { + subBranches = interchanges + }.getBestMatchFromCommandInputWithParameters(input).let { result -> + result.first.let { branch -> + if (branch != null) { + branch.content?.let { content -> + content.invoke(result.second) + return true } } } diff --git a/JET-JVM/src/main/kotlin/de/jet/jvm/tree/TreeBranch.kt b/JET-JVM/src/main/kotlin/de/jet/jvm/tree/TreeBranch.kt index 7a696ceb31..613ce41856 100644 --- a/JET-JVM/src/main/kotlin/de/jet/jvm/tree/TreeBranch.kt +++ b/JET-JVM/src/main/kotlin/de/jet/jvm/tree/TreeBranch.kt @@ -26,10 +26,6 @@ open class TreeBranch, C open var content: CONTENT, ) : Identifiable>, Pathed> { - init { - subBranches = subBranches.distinctBy { path } - } - /** * This function replaces the current [content] of the branch with the given new [content]. * @param content the new content of the branch @@ -56,7 +52,7 @@ open class TreeBranch, C * @since 1.0 */ fun allKnownBranches(): List { - return (subBranches.flatMap { it.allKnownBranches() } + this.forceCast()) + return ((subBranches.flatMap { it.allKnownBranches() } + this.forceCast()).distinctBy { it.path }) } /** @@ -69,7 +65,7 @@ open class TreeBranch, C fun getBestMatchFromPath(path: Address>): SUBBRANCH? { return allKnownBranches() .filter { path.addressString.startsWith(it.path.addressString) } - .maxByOrNull { it.addressString.length } + .maxByOrNull { obj -> obj.address.let { address -> return@let address.addressString.split(address.divider) }.let { split -> split.size + split.last().length } } } /**