50 lines
1.4 KiB
Java
50 lines
1.4 KiB
Java
package com.zerohighdef.geoffrey.Objects;
|
|
|
|
import java.text.ParseException;
|
|
import java.util.LinkedList;
|
|
import java.util.List;
|
|
|
|
public class GeoffreyUtil {
|
|
public static List<String> parseArgs(String [] args) throws ParseException {
|
|
LinkedList<String> parsedArgs = new LinkedList<>();
|
|
boolean parsingMultiWordArg = false;
|
|
StringBuilder parsedArg = new StringBuilder();
|
|
|
|
for (String arg: args) {
|
|
boolean foundEndOfString = false;
|
|
|
|
if (!parsingMultiWordArg) {
|
|
parsedArg = new StringBuilder();
|
|
}
|
|
|
|
for (char c: arg.toCharArray()) {
|
|
if (c == '"') {
|
|
if (parsingMultiWordArg) {
|
|
foundEndOfString = true;
|
|
parsingMultiWordArg = false;
|
|
}
|
|
else {
|
|
parsingMultiWordArg = true;
|
|
}
|
|
}
|
|
}
|
|
|
|
parsedArg.append(arg);
|
|
|
|
if (parsingMultiWordArg) {
|
|
parsedArg.append(" ");
|
|
}
|
|
|
|
if (foundEndOfString || !parsingMultiWordArg) {
|
|
parsedArgs.add(parsedArg.toString().replace("\"", ""));
|
|
}
|
|
}
|
|
|
|
if (parsingMultiWordArg) {
|
|
throw new ParseException("No matching \" found", 0);
|
|
}
|
|
|
|
return parsedArgs;
|
|
}
|
|
}
|