target/*
+de/ddnss/eternal/utils/Test.java
\ No newline at end of file
import java.util.ArrayList;
-public class ArrayUtils {
+public abstract class ArrayUtils {
public static Object[] reverse(Object[] array) {
ArrayList<Object> outArray = new ArrayList<Object>();
package de.ddnss.eternal.utils;
-public class StringUtils {
+public abstract class StringUtils {
public static String reverse(String string) {
String outString = "";
--- /dev/null
+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);
+ }
+}
--- /dev/null
+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
--- /dev/null
+package de.ddnss.eternal.utils.io.input;
+
+public interface CommandInterface {
+ public void exec();
+}
--- /dev/null
+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
--- /dev/null
+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
--- /dev/null
+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();
+ }
+ }
+}
--- /dev/null
+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);
+ }
+}