优化AnyValue.toString

This commit is contained in:
Redkale
2022-12-08 22:46:45 +08:00
parent 1e49fa50b5
commit 8e55ddfcae
2 changed files with 38 additions and 20 deletions

View File

@@ -398,7 +398,7 @@ public abstract class AnyValue {
return toString(0, (any, space) -> {
int index = ((DefaultAnyValue) any).parentArrayIndex;
if (index < 0) return null;
return new StringBuilder().append(space).append(" $index: ").append(index).append(",\r\n");
return new StringBuilder().append(space).append(" '$index': ").append(index).append(",\r\n");
});
}
@@ -957,11 +957,29 @@ public abstract class AnyValue {
CharSequence v = prefixFunc.apply(this, space);
if (v != null) sb.append(v);
}
for (Entry<String> en : getStringEntrys()) {
sb.append(space).append(" '").append(en.name).append("': '").append(en.value).append("',\r\n");
Entry<String>[] stringArray = getStringEntrys();
Entry<AnyValue>[] anyArray = getAnyEntrys();
int size = (stringArray == null ? 0 : stringArray.length) + (anyArray == null ? 0 : anyArray.length);
int index = 0;
for (Entry<String> en : stringArray) {
if (en.value == null) {
sb.append(space).append(" '").append(en.name).append("': null");
} else {
sb.append(space).append(" '").append(en.name).append("': '").append(en.value).append("'");
}
if (++index >= size) {
sb.append("\r\n");
} else {
sb.append(",\r\n");
}
}
for (Entry<AnyValue> en : getAnyEntrys()) {
sb.append(space).append(" '").append(en.name).append("': ").append(en.value.toString(indent + 4, prefixFunc)).append(",\r\n");
for (Entry<AnyValue> en : anyArray) {
sb.append(space).append(" '").append(en.name).append("': ").append(en.value.toString(indent + 4, prefixFunc));
if (++index >= size) {
sb.append("\r\n");
} else {
sb.append(",\r\n");
}
}
sb.append(space).append('}');
return sb.toString();

View File

@@ -38,44 +38,44 @@ public class AnyValuePropertiesTest {
+ " 'source': {\r\n"
+ " 'my': {\r\n"
+ " 'sss': 'my s',\r\n"
+ " 'ttt': 'my t',\r\n"
+ " 'ttt': 'my t'\r\n"
+ " },\r\n"
+ " 'you': {\r\n"
+ " 'ttt': 'you t',\r\n"
+ " 'sss': 'you s',\r\n"
+ " },\r\n"
+ " 'sss': 'you s'\r\n"
+ " }\r\n"
+ " },\r\n"
+ " 'ddd': {\r\n"
+ " $index: 0,\r\n"
+ " '$index': 0,\r\n"
+ " 'ww': 'ww 0',\r\n"
+ " 'nn': 'nn 0',\r\n"
+ " 'nn': 'nn 0'\r\n"
+ " },\r\n"
+ " 'ddd': {\r\n"
+ " $index: 2,\r\n"
+ " '$index': 2,\r\n"
+ " 'ww': 'ww 2',\r\n"
+ " 'nn': 'nn 2',\r\n"
+ " 'nn': 'nn 2'\r\n"
+ " },\r\n"
+ " 'ddd': {\r\n"
+ " $index: 10,\r\n"
+ " '$index': 10,\r\n"
+ " 'ww': 'ww 10',\r\n"
+ " 'nn': 'nn 10',\r\n"
+ " 'nn': 'nn 10'\r\n"
+ " },\r\n"
+ " 'mmm': {\r\n"
+ " 'node': 'n0',\r\n"
+ " 'node': 'n5',\r\n"
+ " 'node': 'n20',\r\n"
+ " 'node': 'n20'\r\n"
+ " },\r\n"
+ " 'bbb': {\r\n"
+ " 'sss': 'value s',\r\n"
+ " 'qqq': {\r\n"
+ " 'rrr': 'value r',\r\n"
+ " },\r\n"
+ " 'rrr': 'value r'\r\n"
+ " }\r\n"
+ " },\r\n"
+ " 'aaa': {\r\n"
+ " 'ppp': 'value p',\r\n"
+ " 'ooo': 'value o',\r\n"
+ " },\r\n"
+ " },\r\n"
+ " 'ooo': 'value o'\r\n"
+ " }\r\n"
+ " }\r\n"
+ "}";
Assertions.assertEquals(result, AnyValue.loadFromProperties(properties).toString());
}