--- /dev/null
+/*
+ * Svjatoslav Commons - shared library of common functionality. Author: Svjatoslav Agejenko.
+ * This project is released under Creative Commons Zero (CC0) license.
+ */
+package eu.svjatoslav.commons.cli_helper.parameter_parser.parameter;
+
+import eu.svjatoslav.commons.cli_helper.parameter_parser.ParameterCount;
+import eu.svjatoslav.commons.cli_helper.parameter_parser.Option;
+
+public class StringOption extends Option<String, StringOption> {
+
+ public final String defaultValue;
+
+ public StringOption(final String description) {
+ super(description, ParameterCount.SINGLE);
+ defaultValue = null;
+ }
+ public StringOption(final String description, String defaultValue) {
+ super(description, ParameterCount.SINGLE);
+ this.defaultValue = defaultValue;
+ this.setPresent(true);
+ }
+
+ @Override
+ public java.lang.String describeFormat() {
+ return "string";
+ }
+
+ @Override
+ public String getValue() {
+
+ if (parameters.isEmpty() && (defaultValue != null)) return defaultValue;
+
+ if (parameters.size() == 1) return parameters.get(0);
+
+ throw new RuntimeException("Parameter " + description
+ + " shall have exactly 1 argument.");
+ }
+
+ @Override
+ public boolean isValid(final java.lang.String value) {
+ return true;
+ }
+
+}