Tokenizer class
Пакет: com.hypixel.hytale.server.core.command.system
Файл: com/hypixel/hytale/server/core/command/system/Tokenizer.java
Поля (39)
| Модификаторы | Тип | Имя |
|---|---|---|
final |
char |
MULTI_ARG_SEPARATOR_CHAR |
|
|
break |
|
|
break |
|
|
break |
|
|
break |
|
|
break |
|
|
break |
|
boolean |
var10 |
|
|
var10 |
|
|
var10 |
|
|
var10 |
|
|
var10 |
|
char |
var11 |
|
String |
var12 |
|
String |
var13 |
|
String |
var14 |
|
String |
var15 |
|
List |
var2 |
|
String[] |
var3 |
|
String |
var4 |
|
|
var4 |
|
char |
var5 |
|
|
var5 |
|
|
var5 |
|
|
var5 |
|
|
var5 |
|
int |
var6 |
|
|
var6 |
|
|
var6 |
|
|
var6 |
|
|
var6 |
|
|
var6 |
|
|
var6 |
|
|
var6 |
|
|
var6 |
|
boolean |
var7 |
|
|
var7 |
|
|
var7 |
|
char |
var9 |
Методы (15)
| Модификаторы | Возврат | Сигнатура |
|---|---|---|
abstract |
|
for for(int var8 = 0; var8 < var4.length() |
|
|
if if(var3.length == 1) |
|
|
if if(var5 == 0) |
|
|
if if(var6 < var8) |
|
|
if if(var5 == 0) |
|
|
if if(var5 == 0 && var6 == var8) |
|
|
if if(var5 == 0) |
|
|
if if(var5 == 0) |
|
|
if if(var7) |
|
|
if if(var5 == 0) |
|
|
if if(!var7) |
|
|
if if(var10) |
|
|
if if(var5 != 0) |
|
|
switch switch(var9) |
|
|
switch switch(var11) |
Исходный код
Показать/скрыть
class="kw">package com.hypixel.hytale.server.core.command.system;
class="kw">import com.hypixel.hytale.server.core.Message;
class="kw">import it.unimi.dsi.fastutil.objects.ObjectArrayList;
class="kw">import java.util.List;
class="kw">import java.util.regex.Pattern;
class="kw">import javax.annotation.Nonnull;
class="kw">import javax.annotation.Nullable;
class="kw">public class Tokenizer {
class="kw">public class="kw">static class="kw">final char MULTI_ARG_SEPARATOR_CHAR = ',';
class="kw">public class="kw">static class="kw">final char MULTI_ARG_BEGIN_CHAR = '[';
class="kw">public class="kw">static class="kw">final char MULTI_ARG_END_CHAR = ']';
class="kw">public class="kw">static class="kw">final String MULTI_ARG_SEPARATOR = String.valueOf(',');
class="kw">public class="kw">static class="kw">final String MULTI_ARG_BEGIN = String.valueOf('[');
class="kw">public class="kw">static class="kw">final String MULTI_ARG_END = String.valueOf(']');
class="kw">private class="kw">static class="kw">final Message MESSAGE_COMMANDS_PARSING_ERROR_UNBALANCED_QUOTES = Message.translation("server.commands.parsing.error.unbalancedQuotes");
class="kw">public Tokenizer() {
}
@Nullable
class="kw">public class="kw">static List<String> parseArguments(@Nonnull String var0, @Nonnull ParseResult var1) {
List var2 = new ObjectArrayList();
String[] var3 = var0.split(Pattern.quote(" "), 2);
var2.add(var3[0]);
if (var3.length == 1) {
class="kw">return var2;
}
String var4 = var3[1];
char var5 = 0;
int var6 = 0;
boolean var7 = false;
for (int var8 = 0; var8 < var4.length(); var8++) {
boolean var10;
char var9 = var4.charAt(var8);
var10 = false;
label99:
class="kw">switch (var9) {
case ' ':
if (var5 == 0) {
if (var6 < var8) {
var2.add(var4.substring(var6, var8));
}
var6 = var8 + 1;
}
break;
case '"':
if (var5 == 0) {
var5 = '"';
} else if (var5 == '"') {
var5 = 0;
String var15 = var4.substring(var6, var8 + 1);
if (!var15.isEmpty()) {
var2.add(var15);
}
var6 = var8 + 1;
}
break;
case '\'':
if (var5 == 0 && var6 == var8) {
var5 = '\'';
} else if (var5 == '\'') {
var5 = 0;
String var14 = var4.substring(var6, var8 + 1);
if (!var14.isEmpty()) {
var2.add(var14);
}
var6 = var8 + 1;
}
break;
case ',':
if (var5 == 0) {
String var13 = var4.substring(var6, var8);
if (!var13.isEmpty()) {
var2.add(var13);
}
var6 = var8;
var10 = true;
}
break;
case '[':
if (var5 == 0) {
if (var7) {
var1.fail(Message.translation("server.commands.parsing.error.cannotBeginListInsideList").param("index", var8));
class="kw">return null;
}
var7 = true;
var6 = var8;
var10 = true;
}
break;
case '\\':
if (var4.length() <= var8 + 1) {
var1.fail(Message.translation("server.commands.parsing.error.invalidEscape").param("index", var8 + 1).param("input", var0));
class="kw">return null;
}
char var11 = var4.charAt(var8 + 1);
class="kw">switch (var11) {
case '"':
case '\'':
case ',':
case '[':
case '\\':
case ']':
var4 = var4.substring(0, var8) + var4.substring(var8 + 1);
var8++;
break label99;
class="kw">default:
var1.fail(
Message.translation("server.commands.parsing.error.invalidEscapeForSymbol")
.param("symbol", var11)
.param("index", var8 + 1)
.param("input", var0)
.param("command", var0)
);
class="kw">return null;
}
case ']':
if (var5 == 0) {
if (!var7) {
var1.fail(Message.translation("server.commands.parsing.error.cannotEndListWithoutStarting").param("index", var8));
class="kw">return null;
}
String var12 = var4.substring(var6, var8);
if (!var12.isEmpty()) {
var2.add(var12);
}
var6 = var8;
var7 = false;
var10 = true;
}
}
if (var10) {
var2.add(var4.substring(var6, var8 + 1));
var6 = var8 + 1;
}
if (var6 > var4.length()) {
var6 = var4.length();
break;
}
}
if (var5 != 0) {
var1.fail(MESSAGE_COMMANDS_PARSING_ERROR_UNBALANCED_QUOTES);
class="kw">return null;
}
if (var6 != var4.length()) {
var2.add(var4.substring(var6));
}
class="kw">return var2;
}
}