From 9575461dc0c67510a808c93fa094b753725a2fdb Mon Sep 17 00:00:00 2001 From: TheFruxz Date: Sat, 4 Dec 2021 14:53:49 +0100 Subject: [PATCH] Feature: syntaxIssue custom process --- .../jet/jvm/console/interchange/ConsoleInterchange.kt | 6 ++++++ .../de/jet/jvm/extension/input/ConsoleInterchange.kt | 11 +++++++++-- 2 files changed, 15 insertions(+), 2 deletions(-) diff --git a/JET-JVM/src/main/kotlin/de/jet/jvm/console/interchange/ConsoleInterchange.kt b/JET-JVM/src/main/kotlin/de/jet/jvm/console/interchange/ConsoleInterchange.kt index 7cef918671..1ec4486eff 100644 --- a/JET-JVM/src/main/kotlin/de/jet/jvm/console/interchange/ConsoleInterchange.kt +++ b/JET-JVM/src/main/kotlin/de/jet/jvm/console/interchange/ConsoleInterchange.kt @@ -10,6 +10,7 @@ class ConsoleInterchange( override val path: String, override val branches: List, override val content: ((parameters: List) -> Unit)? = null, + val syntaxIssue: ((parameters: List) -> Unit)? = null, ) : ConsoleInterchangeStructure(identity) { fun performInterchange(input: String): Boolean { @@ -33,6 +34,7 @@ class ConsoleInterchange( var path: String, var branches: MutableList = mutableListOf(), var content: ((parameters: List) -> Unit)? = null, + var syntaxIssue: ((parameters: List) -> Unit)? = null, ) : Producible { operator fun plus(branch: ConsoleStructureBranch) = apply { @@ -47,6 +49,10 @@ class ConsoleInterchange( this.content = content } + fun onSyntaxIssue(syntaxIssue: ((parameters: List) -> Unit)?) = apply { + this.syntaxIssue = syntaxIssue + } + override fun produce() = ConsoleInterchange( identity, path, branches, content ) diff --git a/JET-JVM/src/main/kotlin/de/jet/jvm/extension/input/ConsoleInterchange.kt b/JET-JVM/src/main/kotlin/de/jet/jvm/extension/input/ConsoleInterchange.kt index 3d3b3194c2..edb9ea939d 100644 --- a/JET-JVM/src/main/kotlin/de/jet/jvm/extension/input/ConsoleInterchange.kt +++ b/JET-JVM/src/main/kotlin/de/jet/jvm/extension/input/ConsoleInterchange.kt @@ -43,9 +43,16 @@ fun requestTerminalInterchangeInput(vararg interchanges: ConsoleInterchange) { } if (call != null) { + val inputParameters = input.split(" ").drop(1) + if (!call.performInterchange(inputParameters.joinToString(" "))) { + val syntaxIssueReaction = call.syntaxIssue + + if (syntaxIssueReaction != null) { + syntaxIssueReaction(inputParameters) + } else { + println("No response from interchange, seems that your input-syntax was wrong, try again!") + } - if (!call.performInterchange(input.split(" ").drop(1).joinToString(" "))) { - println("No response from interchange, seems that your input-syntax was wrong, try again!") } } else {