Skip to content
This repository was archived by the owner on Apr 12, 2022. It is now read-only.

Commit 50320b6

Browse files
committed
Tag system cleaning
1 parent 5314f27 commit 50320b6

27 files changed

+130
-97
lines changed

src/main/java/com/denizenscript/denizen2core/Denizen2Core.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -181,7 +181,7 @@ public static void init(Denizen2Implementation impl) {
181181
register(new WaitCommand());
182182
register(new WhileCommand());
183183
// Common Tag Handlers
184-
register(new BooleanTagBase());
184+
register(BooleanTag.getForBooleanBase());
185185
register(new DefExistsTagBase());
186186
register(new DefTagBase());
187187
register(new DurationTagBase());
@@ -236,7 +236,7 @@ public static AbstractTagObject loadFromSaved(Action<String> error, String str)
236236
if (!customSaveLoaders.containsKey(typed)) {
237237
error.run("No save loader for the specified type: " + ColorSet.emphasis + typed + ColorSet.warning + "! "
238238
+ "May be invalid input to a saves loader?");
239-
return new NullTag();
239+
return NullTag.NULL;
240240
}
241241
return customSaveLoaders.get(typed).apply(error, dat.get(1));
242242
}

src/main/java/com/denizenscript/denizen2core/arguments/Argument.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -55,7 +55,7 @@ public AbstractTagObject parse(CommandQueue queue, HashMap<String, AbstractTagOb
5555
}
5656
StringBuilder sb = new StringBuilder();
5757
for (ArgumentBit bit : bits) {
58-
sb.append(bit.parse(queue, vars, mode, error));
58+
sb.append(bit.parse(queue, vars, mode, error).toString());
5959
}
6060
return new TextTag(sb.toString());
6161
}

src/main/java/com/denizenscript/denizen2core/arguments/TagArgumentBit.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -58,7 +58,7 @@ public AbstractTagObject parse(CommandQueue queue, HashMap<String, AbstractTagOb
5858
if (fallback == null) {
5959
error.run("Invalid tag bits -> empty tag, or invalid base: " + ColorSet.emphasis + (bits.length > 0 ? bits[0] : ""));
6060
}
61-
res = new NullTag();
61+
res = NullTag.NULL;
6262
}
6363
else {
6464
TagData data = new TagData(error, bits, fallback, vars, mode, queue);

src/main/java/com/denizenscript/denizen2core/arguments/TextArgumentBit.java

Lines changed: 15 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,10 @@
1111
public class TextArgumentBit extends ArgumentBit {
1212

1313
public TextArgumentBit(String inputText, boolean quoted) {
14+
this(inputText, quoted, true);
15+
}
16+
17+
public TextArgumentBit(String inputText, boolean quoted, boolean depthAllowed) {
1418
wasQuoted = quoted;
1519
try {
1620
long l = Long.parseLong(inputText);
@@ -32,15 +36,17 @@ public TextArgumentBit(String inputText, boolean quoted) {
3236
catch (NumberFormatException ex) {
3337
// Ignore
3438
}
35-
ListTag ltTest = ListTag.getFor(TextArgumentBit::noAction, inputText);
36-
if (ltTest != null && ltTest.toString().equals(inputText)) {
37-
value = ltTest;
38-
return;
39-
}
40-
MapTag mtTest = MapTag.getFor(TextArgumentBit::noAction, inputText);
41-
if (mtTest != null && mtTest.toString().equals(inputText)) {
42-
value = mtTest;
43-
return;
39+
if (depthAllowed) {
40+
ListTag ltTest = ListTag.getFor(TextArgumentBit::noAction, inputText);
41+
if (ltTest != null && ltTest.toString().equals(inputText)) {
42+
value = ltTest;
43+
return;
44+
}
45+
MapTag mtTest = MapTag.getFor(TextArgumentBit::noAction, inputText);
46+
if (mtTest != null && mtTest.toString().equals(inputText)) {
47+
value = mtTest;
48+
return;
49+
}
4450
}
4551
value = new TextTag(inputText);
4652
}

src/main/java/com/denizenscript/denizen2core/commands/queuecommands/DetermineCommand.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -59,7 +59,7 @@ public boolean isProcedural() {
5959
@Override
6060
public void execute(CommandQueue queue, CommandEntry entry) {
6161
String det = CoreUtilities.toLowerCase(entry.getArgumentObject(queue, 0).toString());
62-
AbstractTagObject ato = new BooleanTag(true);
62+
AbstractTagObject ato = BooleanTag.getForBoolean(true);
6363
if (entry.arguments.size() > 1) {
6464
ato = entry.getArgumentObject(queue, 1);
6565
}

src/main/java/com/denizenscript/denizen2core/commands/queuecommands/ForeachCommand.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -86,7 +86,7 @@ public void execute(CommandQueue queue, CommandEntry entry) {
8686
queue.commandStack.peek().goTo(entry.blockStart);
8787
}
8888
else {
89-
queue.commandStack.peek().setDefinition(fcd.resName, new NullTag());
89+
queue.commandStack.peek().removeDefinition(fcd.resName);
9090
if (queue.shouldShowGood()) {
9191
queue.outGood("Foreach completed!");
9292
}

src/main/java/com/denizenscript/denizen2core/events/ScriptEvent.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -153,7 +153,7 @@ else if (loaded) {
153153
public HashMap<String, AbstractTagObject> getDefinitions(ScriptEventData data) {
154154
HashMap<String, AbstractTagObject> defs = new HashMap<>();
155155
defs.put("priority", new IntegerTag(data.priority));
156-
defs.put("cancelled", new BooleanTag(cancelled));
156+
defs.put("cancelled", BooleanTag.getForBoolean(cancelled));
157157
return defs;
158158
}
159159

src/main/java/com/denizenscript/denizen2core/tags/AbstractTagObject.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ public AbstractTagObject handle(TagData data) {
2222
if (ato != null) {
2323
return ato.handle(data);
2424
}
25-
return new NullTag();
25+
return NullTag.NULL;
2626
}
2727

2828
public abstract AbstractTagObject handleElseCase(TagData data);

src/main/java/com/denizenscript/denizen2core/tags/TagData.java

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,9 @@
44
import com.denizenscript.denizen2core.arguments.Argument;
55
import com.denizenscript.denizen2core.arguments.TagBit;
66
import com.denizenscript.denizen2core.commands.CommandQueue;
7+
import com.denizenscript.denizen2core.tags.objects.NullTag;
78
import com.denizenscript.denizen2core.utilities.Action;
9+
import com.denizenscript.denizen2core.utilities.debugging.ColorSet;
810

911
import java.util.HashMap;
1012

@@ -43,6 +45,10 @@ public TagData shrink() {
4345
return this;
4446
}
4547

48+
public int currentIndex() {
49+
return cInd;
50+
}
51+
4652
public int remaining() {
4753
return bits.length - cInd;
4854
}
@@ -56,6 +62,10 @@ public boolean hasNextModifier() {
5662
}
5763

5864
public AbstractTagObject getNextModifier() {
65+
if (bits[cInd].variable == null) {
66+
error.run("No tag modifier given when required for tag part " + ColorSet.emphasis + bits[cInd].key);
67+
return NullTag.NULL;
68+
}
5969
return bits[cInd].variable.parse(currentQueue, variables, dbmode, error);
6070
}
6171
}

src/main/java/com/denizenscript/denizen2core/tags/handlers/DefExistsTagBase.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -28,8 +28,8 @@ public AbstractTagObject handle(TagData data) {
2828
obj = data.currentQueue.commandStack.peek().getDefinition(def);
2929
}
3030
if (obj == null) {
31-
return new BooleanTag(false).handle(data.shrink());
31+
return BooleanTag.getForBoolean(false).handle(data.shrink());
3232
}
33-
return new BooleanTag(true).handle(data.shrink());
33+
return BooleanTag.getForBoolean(true).handle(data.shrink());
3434
}
3535
}

0 commit comments

Comments
 (0)