Implement basic SNBT reader and testsuite
This commit is contained in:
parent
396c660113
commit
a0f372693b
17 changed files with 352 additions and 2 deletions
|
@ -52,4 +52,16 @@ class ByteArrayTag extends Tag {
|
|||
builder.append(
|
||||
"${isList ? "".padLeft(indent, '\t') : ""}[B; ${value.join("B, ")}B]");
|
||||
}
|
||||
|
||||
@override
|
||||
void readStringifiedValue(StringReader reader) {
|
||||
reader.expect("[");
|
||||
while (reader.peek() != "]") {
|
||||
value.add(int.parse(reader.readNumber()));
|
||||
reader.expect("b");
|
||||
|
||||
if (reader.peek() == ",") reader.next();
|
||||
}
|
||||
reader.expect("]");
|
||||
}
|
||||
}
|
||||
|
|
|
@ -39,4 +39,12 @@ class ByteTag extends Tag {
|
|||
void writeStringifiedValue(StringBuilder builder, int indent, bool isList) {
|
||||
builder.append("${value}b");
|
||||
}
|
||||
|
||||
@override
|
||||
void readStringifiedValue(StringReader reader) {
|
||||
String val = reader.readNumber();
|
||||
value = int.parse(val);
|
||||
|
||||
reader.expect("b");
|
||||
}
|
||||
}
|
||||
|
|
|
@ -190,4 +190,16 @@ class CompoundTag extends Tag implements Map<String, Tag> {
|
|||
|
||||
@override
|
||||
Iterable<Tag> get values => value.values;
|
||||
|
||||
@override
|
||||
void readStringifiedValue(StringReader reader) {
|
||||
reader.expect("{");
|
||||
|
||||
while (reader.peek() != "}") {
|
||||
Tag tag = Tag.readStringifiedNamedTag(reader);
|
||||
put(tag.getKey(), tag);
|
||||
}
|
||||
|
||||
reader.expect("}");
|
||||
}
|
||||
}
|
||||
|
|
|
@ -39,4 +39,12 @@ class DoubleTag extends Tag {
|
|||
void writeStringifiedValue(StringBuilder builder, int indent, bool isList) {
|
||||
builder.append("${isList ? "".padLeft(indent, '\t') : ""}${value}d");
|
||||
}
|
||||
|
||||
@override
|
||||
void readStringifiedValue(StringReader reader) {
|
||||
double val = double.parse(reader.readNumber());
|
||||
value = val;
|
||||
|
||||
reader.expect("d");
|
||||
}
|
||||
}
|
||||
|
|
|
@ -22,4 +22,7 @@ class EndTag extends Tag {
|
|||
|
||||
@override
|
||||
void writeStringifiedValue(StringBuilder builder, int indent, bool isList) {}
|
||||
|
||||
@override
|
||||
void readStringifiedValue(StringReader reader) {}
|
||||
}
|
||||
|
|
|
@ -38,4 +38,12 @@ class FloatTag extends Tag {
|
|||
void writeStringifiedValue(StringBuilder builder, int indent, bool isList) {
|
||||
builder.append("${isList ? "".padLeft(indent, '\t') : ""}${value}f");
|
||||
}
|
||||
|
||||
@override
|
||||
void readStringifiedValue(StringReader reader) {
|
||||
double val = double.parse(reader.readNumber());
|
||||
value = val;
|
||||
|
||||
reader.expect("f");
|
||||
}
|
||||
}
|
||||
|
|
|
@ -51,4 +51,15 @@ class IntArrayTag extends Tag {
|
|||
builder.append(
|
||||
"${isList ? "".padLeft(indent, '\t') : ""}[I; ${value.join('I, ')}I]");
|
||||
}
|
||||
|
||||
@override
|
||||
void readStringifiedValue(StringReader reader) {
|
||||
reader.expect("[");
|
||||
while (reader.peek() != "]") {
|
||||
value.add(int.parse(reader.readNumber()));
|
||||
|
||||
if (reader.peek() == ",") reader.next();
|
||||
}
|
||||
reader.expect("]");
|
||||
}
|
||||
}
|
||||
|
|
|
@ -38,4 +38,10 @@ class IntTag extends Tag {
|
|||
void writeStringifiedValue(StringBuilder builder, int indent, bool isList) {
|
||||
builder.append("${isList ? "".padLeft(indent, '\t') : ""}${value}i");
|
||||
}
|
||||
|
||||
@override
|
||||
void readStringifiedValue(StringReader reader) {
|
||||
String val = reader.readNumber();
|
||||
value = int.parse(val);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -103,4 +103,15 @@ class ListTag extends Tag {
|
|||
}
|
||||
builder.append("\n${"".padLeft(indent - 1, '\t')}]");
|
||||
}
|
||||
|
||||
@override
|
||||
void readStringifiedValue(StringReader reader) {
|
||||
reader.expect("[");
|
||||
while (reader.peek() != "]") {
|
||||
value.add(Tag.readStringifiedNamedTag(reader));
|
||||
|
||||
if (reader.peek() == ",") reader.next();
|
||||
}
|
||||
reader.expect("]");
|
||||
}
|
||||
}
|
||||
|
|
|
@ -55,4 +55,16 @@ class LongArrayTag extends Tag {
|
|||
builder.append(
|
||||
"${isList ? "".padLeft(indent, '\t') : ""}[L; ${value.join('L, ')}L]");
|
||||
}
|
||||
|
||||
@override
|
||||
void readStringifiedValue(StringReader reader) {
|
||||
reader.expect("[");
|
||||
while (reader.peek() != "]") {
|
||||
value.add(int.parse(reader.readNumber()));
|
||||
reader.expect("l");
|
||||
|
||||
if (reader.peek() == ",") reader.next();
|
||||
}
|
||||
reader.expect("]");
|
||||
}
|
||||
}
|
||||
|
|
|
@ -38,4 +38,12 @@ class LongTag extends Tag {
|
|||
void writeStringifiedValue(StringBuilder builder, int indent, bool isList) {
|
||||
builder.append("${isList ? "".padLeft(indent, '\t') : ""}${value}L");
|
||||
}
|
||||
|
||||
@override
|
||||
void readStringifiedValue(StringReader reader) {
|
||||
int val = int.parse(reader.readNumber());
|
||||
value = val;
|
||||
|
||||
reader.expect("l");
|
||||
}
|
||||
}
|
||||
|
|
|
@ -38,4 +38,12 @@ class ShortTag extends Tag {
|
|||
void writeStringifiedValue(StringBuilder builder, int indent, bool isList) {
|
||||
builder.append("${isList ? "".padLeft(indent, '\t') : ""}${value}S");
|
||||
}
|
||||
|
||||
@override
|
||||
void readStringifiedValue(StringReader reader) {
|
||||
int val = int.parse(reader.readNumber());
|
||||
value = val;
|
||||
|
||||
reader.expect("s");
|
||||
}
|
||||
}
|
||||
|
|
|
@ -38,4 +38,10 @@ class StringTag extends Tag {
|
|||
void writeStringifiedValue(StringBuilder builder, int indent, bool isList) {
|
||||
builder.append("${isList ? "".padLeft(indent, '\t') : ""}\"${value}\"");
|
||||
}
|
||||
|
||||
@override
|
||||
void readStringifiedValue(StringReader reader) {
|
||||
String str = reader.readString();
|
||||
value = str;
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue