refactor of rename command

This commit is contained in:
Vlammar 2020-12-12 14:10:02 +01:00
parent 637fc6f15c
commit cbb03e7827
2 changed files with 37 additions and 47 deletions

View File

@ -53,6 +53,43 @@ public abstract class IoMCommand extends Command {
return getMapFromArgs(playerSender(), 0, true);
}
protected ArrayList<String> getArgs() {
ArrayList<String> arguments = new ArrayList<>();
//State of the automaton, can read word like:
//name_here; "name here"
int state = 0;
StringBuilder s = new StringBuilder();
for (String arg : args) {
switch (state) {
case 0:
if (arg.startsWith("\"")) {
state = 1;
arg = arg.substring(1);
s = s.append(arg);
} else {
arguments.add(arg.toString());
}
break;
case 1:
if (arg.endsWith("\"")) {
arg = arg.substring(0, arg.length() - 1);
s = s.append(" " + arg);
arguments.add(s.toString());
s = new StringBuilder();
state = 0;
} else {
s = s.append(" " + arg);
}
break;
default:
throw new IllegalStateException("Unexpected value: " + state);
}
}
return arguments;
}
//TODO:Add the quote system to zlib and refactor this
protected ImageMap getMapFromArgs(Player player, int index) throws CommandException {
if (args.length <= index) {

View File

@ -25,7 +25,6 @@ import fr.moribus.imageonmap.map.MapManager;
import fr.zcraft.quartzlib.components.commands.CommandException;
import fr.zcraft.quartzlib.components.commands.CommandInfo;
import fr.zcraft.quartzlib.components.i18n.I;
import fr.zcraft.quartzlib.tools.PluginLogger;
import java.util.ArrayList;
import java.util.List;
import org.bukkit.command.CommandSender;
@ -33,52 +32,6 @@ import org.bukkit.command.CommandSender;
@CommandInfo(name = "rename", usageParameters = "<original map name> <new map name>")
public class RenameCommand extends IoMCommand {
private ArrayList<String> getArgs() {
ArrayList<String> arguments = new ArrayList<>();
//State of the automaton, can read word like:
//name_here; "name here"
int state = 0;
StringBuilder s = new StringBuilder();
for (String arg : args) {
PluginLogger.info("arg " + arg);
switch (state) {
case 0:
if (arg.startsWith("\"")) {
PluginLogger.info("start with ");
state = 1;
arg = arg.substring(1);
s = s.append(arg);
} else {
PluginLogger.info("not start with ");
arguments.add(arg.toString());
}
break;
case 1:
if (arg.endsWith("\"")) {
PluginLogger.info("end with ");
arg = arg.substring(0, arg.length() - 1);
s = s.append(" " + arg);
arguments.add(s.toString());
s = new StringBuilder();
state = 0;
} else {
PluginLogger.info("not end with ");
s = s.append(" " + arg);
}
break;
default:
throw new IllegalStateException("Unexpected value: " + state);
}
//arguments.add(arg.toString());
}
return arguments;
}
@Override
protected void run() throws CommandException {