]> Git Server - utils.git/commitdiff
Stuff
authorRobin Cheney <cheneyr@eternal.ddnss.de>
Wed, 19 Nov 2025 14:56:04 +0000 (15:56 +0100)
committerRobin Cheney <cheneyr@eternal.ddnss.de>
Wed, 19 Nov 2025 14:56:04 +0000 (15:56 +0100)
.gitignore
src/main/java/de/ddnss/eternal/utils/ArrayUtils.java
src/main/java/de/ddnss/eternal/utils/StringUtils.java
src/main/java/de/ddnss/eternal/utils/io/input/AvailableCommands.java [new file with mode: 0644]
src/main/java/de/ddnss/eternal/utils/io/input/Command.java [new file with mode: 0644]
src/main/java/de/ddnss/eternal/utils/io/input/CommandInterface.java [new file with mode: 0644]
src/main/java/de/ddnss/eternal/utils/io/input/CommandOption.java [new file with mode: 0644]
src/main/java/de/ddnss/eternal/utils/io/input/ParameterizedCommand.java [new file with mode: 0644]
src/main/java/de/ddnss/eternal/utils/io/input/user/CMDCommands.java [new file with mode: 0644]
src/main/java/de/ddnss/eternal/utils/io/input/user/UserInput.java [new file with mode: 0644]

index e420ee4ba04645e453bb1eaef86b59ce1656161e..7bb4c2f90e28f86aa1430b3f52b17e36b4a9221c 100644 (file)
@@ -1 +1,2 @@
 target/*
+de/ddnss/eternal/utils/Test.java
\ No newline at end of file
index aad38f3a2085d6714030c17a8ae540a46cf6b1c6..930d97f0131190e570a933a150415e5188dcddb7 100644 (file)
@@ -2,7 +2,7 @@ package de.ddnss.eternal.utils;
 
 import java.util.ArrayList;
 
-public class ArrayUtils {
+public abstract class ArrayUtils {
     public static Object[] reverse(Object[] array) {
 
         ArrayList<Object> outArray = new ArrayList<Object>();
index 9eddcf2d7160d0fe937b63b4ef31cbcd39ecbc4a..eefae3381929aa24a3b7fc78052566e8f07aa0f2 100644 (file)
@@ -1,6 +1,6 @@
 package de.ddnss.eternal.utils;
 
-public class StringUtils {
+public abstract class StringUtils {
     public static String reverse(String string) {
 
         String outString = "";
diff --git a/src/main/java/de/ddnss/eternal/utils/io/input/AvailableCommands.java b/src/main/java/de/ddnss/eternal/utils/io/input/AvailableCommands.java
new file mode 100644 (file)
index 0000000..f3510b7
--- /dev/null
@@ -0,0 +1,21 @@
+package de.ddnss.eternal.utils.io.input;
+
+import java.util.function.Function;
+
+public enum AvailableCommands {
+    SAY((CommandOption<String> args) -> {
+        System.out.println(args.get("SAY"));
+        return null;
+    }, new CommandOption<String>() {
+    });
+
+    public final CommandInterface command;
+
+    private AvailableCommands(Function<CommandOption<String>, Void> command, CommandOption<String> arguments) {
+        this.command = new ParameterizedCommand<String>(command, arguments);
+    }
+
+    private AvailableCommands(Function<CommandOption<String>, Void> command) {
+        this.command = new ParameterizedCommand<String>(command);
+    }
+}
diff --git a/src/main/java/de/ddnss/eternal/utils/io/input/Command.java b/src/main/java/de/ddnss/eternal/utils/io/input/Command.java
new file mode 100644 (file)
index 0000000..400d05e
--- /dev/null
@@ -0,0 +1,14 @@
+package de.ddnss.eternal.utils.io.input;
+
+public final class Command implements CommandInterface {
+    final Runnable command;
+
+    public Command(Runnable command) {
+        this.command = command;
+    }
+
+    @Override
+    public void exec() {
+        this.command.run();
+    };
+}
\ No newline at end of file
diff --git a/src/main/java/de/ddnss/eternal/utils/io/input/CommandInterface.java b/src/main/java/de/ddnss/eternal/utils/io/input/CommandInterface.java
new file mode 100644 (file)
index 0000000..ed3c62f
--- /dev/null
@@ -0,0 +1,5 @@
+package de.ddnss.eternal.utils.io.input;
+
+public interface CommandInterface {
+    public void exec();
+}
diff --git a/src/main/java/de/ddnss/eternal/utils/io/input/CommandOption.java b/src/main/java/de/ddnss/eternal/utils/io/input/CommandOption.java
new file mode 100644 (file)
index 0000000..61df52f
--- /dev/null
@@ -0,0 +1,6 @@
+package de.ddnss.eternal.utils.io.input;
+
+import java.util.HashMap;
+
+public class CommandOption<E> extends HashMap<String, E> {
+}
\ No newline at end of file
diff --git a/src/main/java/de/ddnss/eternal/utils/io/input/ParameterizedCommand.java b/src/main/java/de/ddnss/eternal/utils/io/input/ParameterizedCommand.java
new file mode 100644 (file)
index 0000000..93fb531
--- /dev/null
@@ -0,0 +1,26 @@
+package de.ddnss.eternal.utils.io.input;
+
+import java.util.function.Function;
+
+public final class ParameterizedCommand<E> implements CommandInterface {
+    final Function<CommandOption<E>, Void> command;
+    CommandOption<E> arguments;
+
+    public ParameterizedCommand(Function<CommandOption<E>, Void> command, CommandOption<E> arguments) {
+        this.command = command;
+        this.arguments = arguments;
+    }
+
+    public ParameterizedCommand(Function<CommandOption<E>, Void> command) {
+        this.command = command;
+    }
+
+    @Override
+    public void exec() {
+        this.command.apply(arguments);
+    };
+
+    public void exec(CommandOption<E> arguments) {
+        this.command.apply(arguments);
+    };
+}
\ No newline at end of file
diff --git a/src/main/java/de/ddnss/eternal/utils/io/input/user/CMDCommands.java b/src/main/java/de/ddnss/eternal/utils/io/input/user/CMDCommands.java
new file mode 100644 (file)
index 0000000..56a8e80
--- /dev/null
@@ -0,0 +1,27 @@
+package de.ddnss.eternal.utils.io.input.user;
+
+import java.util.Scanner;
+
+import de.ddnss.eternal.utils.io.input.AvailableCommands;
+
+public class CMDCommands {
+    public static void split() {
+        Scanner scanner = UserInput.scanner();
+
+        System.out.println("Enter command:");
+
+        while (true) {
+            System.out.print("> ");
+            String line = scanner.nextLine().trim();
+
+            // Skip empty input
+            if (line.isEmpty())
+                continue;
+
+            // Split into tokens (command + args)
+            String[] parts = line.split("\\s+");
+            AvailableCommands command = AvailableCommands.valueOf(parts[0].toUpperCase()); // first word
+            command.command.exec();
+        }
+    }
+}
diff --git a/src/main/java/de/ddnss/eternal/utils/io/input/user/UserInput.java b/src/main/java/de/ddnss/eternal/utils/io/input/user/UserInput.java
new file mode 100644 (file)
index 0000000..401bdaf
--- /dev/null
@@ -0,0 +1,29 @@
+package de.ddnss.eternal.utils.io.input.user;
+
+import java.util.Scanner;
+
+public class UserInput {
+    public static String prompt(String prompt) {
+        System.out.println(prompt);
+        Scanner input = scanner();
+        String result = input.next();
+        input.close();
+        return result;
+    }
+
+    public static String prompt(String prompt, boolean readWholeLine) {
+        String result;
+        System.out.println(prompt);
+        Scanner input = scanner();
+        if (readWholeLine)
+            result = input.next();
+        else
+            result = input.nextLine();
+        input.close();
+        return result;
+    }
+
+    public static Scanner scanner() {
+        return new Scanner(System.in);
+    }
+}