package dev.kske.chess.uci; import java.util.*; /** * Project: Chess
* File: UCIOption.java
* Created: 22.07.2019
* * @since Chess v0.3-alpha * @author Kai S. K. Engelbart */ public class UCIOption { private String name, defaultVal, minVal, maxVal; private GUIType type; private List varList; public UCIOption(String line) { varList = new ArrayList<>(); String[] tokens = line.split(" "); for (int i = 0; i < tokens.length; i++) switch (tokens[i]) { case "name": StringJoiner nameJoiner = new StringJoiner(" "); while ( !Arrays.asList("type", "default", "min", "max", "var") .contains(tokens[i + 1]) ) nameJoiner.add(tokens[++i]); name = nameJoiner.toString(); break; case "type": type = GUIType.valueOf(tokens[++i].toUpperCase()); break; case "default": // Default string may be empty defaultVal = i == tokens.length - 1 ? "" : tokens[++i]; break; case "min": minVal = tokens[++i]; break; case "max": maxVal = tokens[++i]; break; case "var": varList.add(tokens[++i]); break; default: System.err.printf( "Unknown parameter '%s' for command 'option' found!%n", tokens[i] ); } } public String getName() { return name; } public String getDefaultVal() { return defaultVal; } public String getMinVal() { return minVal; } public String getMaxVal() { return maxVal; } public GUIType getType() { return type; } public List getVarList() { return varList; } public enum GUIType { CHECK, SPIN, COMBO, BUTTON, STRING } }