Skip to content

Commit 22aa364

Browse files
authored
Added methods U.formatJsonOrXml(text) and U.getTextType(text).
1 parent eff5cb9 commit 22aa364

File tree

2 files changed

+71
-3
lines changed

2 files changed

+71
-3
lines changed

src/main/java/com/github/underscore/U.java

Lines changed: 39 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1789,7 +1789,8 @@ public static <T> T set(final Map<String, Object> object, final String path, Obj
17891789
return set(object, stringToPath(path), value);
17901790
}
17911791

1792-
public static <T> T set(final Map<String, Object> object, final List<String> paths, Object value) {
1792+
public static <T> T set(
1793+
final Map<String, Object> object, final List<String> paths, Object value) {
17931794
return baseGetOrSetOrRemove(object, paths, value, OperationType.SET);
17941795
}
17951796

@@ -2674,6 +2675,43 @@ public static String xmlToJson(String xml, Mode mode) {
26742675
return xmlToJson(xml, Json.JsonStringBuilder.Step.TWO_SPACES, mode);
26752676
}
26762677

2678+
public enum TextType {
2679+
JSON,
2680+
XML,
2681+
OTHER
2682+
}
2683+
2684+
public static TextType getTextType(String text) {
2685+
String trimmed = trim(text);
2686+
final TextType textType;
2687+
if (trimmed.startsWith("{") && trimmed.endsWith("}")
2688+
|| trimmed.startsWith("[") && trimmed.endsWith("]")) {
2689+
textType = TextType.JSON;
2690+
} else if (trimmed.startsWith("<") && trimmed.endsWith(">")) {
2691+
textType = TextType.XML;
2692+
} else {
2693+
textType = TextType.OTHER;
2694+
}
2695+
return textType;
2696+
}
2697+
2698+
public static String formatJsonOrXml(String jsonOrXml, String identStep) {
2699+
TextType textType = getTextType(jsonOrXml);
2700+
final String result;
2701+
if (textType == TextType.JSON) {
2702+
result = formatJson(jsonOrXml, Json.JsonStringBuilder.Step.valueOf(identStep));
2703+
} else if (textType == TextType.XML) {
2704+
result = formatXml(jsonOrXml, Xml.XmlStringBuilder.Step.valueOf(identStep));
2705+
} else {
2706+
result = jsonOrXml;
2707+
}
2708+
return result;
2709+
}
2710+
2711+
public static String formatJsonOrXml(String jsonOrXml) {
2712+
return formatJsonOrXml(jsonOrXml, "TWO_SPACES");
2713+
}
2714+
26772715
public static String formatJson(String json, Json.JsonStringBuilder.Step identStep) {
26782716
return Json.formatJson(json, identStep);
26792717
}

src/test/java/com/github/underscore/LodashTest.java

Lines changed: 32 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1044,6 +1044,37 @@ void jsonToXml() {
10441044
U.jsonToXml("{\"a\" : {\n \"b\" : \"v1\" }, \"c\" : [\"v1\", \"v2\", \"v3\"]}"));
10451045
}
10461046

1047+
@Test
1048+
void getTextType() {
1049+
assertEquals(
1050+
U.TextType.OTHER,
1051+
U.getTextType("<root><element>1</element><element>2</element></root"));
1052+
assertEquals(
1053+
U.TextType.OTHER,
1054+
U.getTextType("root><element>1</element><element>2</element></root>"));
1055+
assertEquals(U.TextType.OTHER, U.getTextType("{\n \"a\": {\n }\n"));
1056+
assertEquals(U.TextType.OTHER, U.getTextType("\n \"a\": {\n }\n}"));
1057+
assertEquals(U.TextType.OTHER, U.getTextType("[\n 1.00\n"));
1058+
assertEquals(U.TextType.OTHER, U.getTextType("\n 1.00\n]"));
1059+
}
1060+
1061+
@Test
1062+
void formatJsonOrXml() {
1063+
assertEquals(
1064+
"<root>\n <element>1</element>\n <element>2</element>\n</root>",
1065+
U.formatJsonOrXml("<root><element>1</element><element>2</element></root>"));
1066+
assertEquals(
1067+
"<a>\n <b></b>\n <b></b>\n</a>",
1068+
U.formatJsonOrXml("<a>\n <b></b>\n <b></b>\n</a>", "FOUR_SPACES"));
1069+
assertEquals("{\n \"a\": {\n }\n}", U.formatJsonOrXml("{\n \"a\": {\n }\n}"));
1070+
assertEquals("[\n]", U.formatJsonOrXml("[]"));
1071+
assertEquals("[\n 1.00\n]", U.formatJsonOrXml("[1.00]"));
1072+
assertEquals(
1073+
"{\n \"a\": {\n }\n}",
1074+
U.formatJsonOrXml("{\n \"a\": {\n }\n}", "FOUR_SPACES"));
1075+
assertEquals("text", U.formatJsonOrXml("text", "FOUR_SPACES"));
1076+
}
1077+
10471078
@Test
10481079
void formatXml() {
10491080
assertEquals(
@@ -1249,8 +1280,7 @@ void changeXmlEncoding() {
12491280
"<?xml version=\"1.0\" encoding=\"UTF-8\"?><a>Test</a>",
12501281
Xml.XmlStringBuilder.Step.COMPACT,
12511282
"windows-1251"));
1252-
assertNull(
1253-
U.changeXmlEncoding(null, Xml.XmlStringBuilder.Step.COMPACT, "windows-1251"));
1283+
assertNull(U.changeXmlEncoding(null, Xml.XmlStringBuilder.Step.COMPACT, "windows-1251"));
12541284
}
12551285

12561286
@Test

0 commit comments

Comments
 (0)