Skip to content

Commit 0507492

Browse files
committed
Sync with underscore-java.
1 parent ac7c52e commit 0507492

File tree

5 files changed

+257
-361
lines changed

5 files changed

+257
-361
lines changed

src/main/java/com/github/underscore/lodash/Json.java

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
/*
22
* The MIT License (MIT)
33
*
4-
* Copyright 2015-2019 Valentyn Kolesnikov
4+
* Copyright 2015-2020 Valentyn Kolesnikov
55
*
66
* Permission is hereby granted, free of charge, to any person obtaining a copy
77
* of this software and associated documentation files (the "Software"), to deal
@@ -697,7 +697,9 @@ private Number readNumber() {
697697
final String number = endCapture();
698698
final Number result;
699699
if (number.contains(".") || number.contains("e") || number.contains("E")) {
700-
if (number.length() > 9) {
700+
if (number.length() > 9 || (number.contains(".")
701+
&& number.length() - number.lastIndexOf('.') > 2)
702+
&& number.charAt(number.length() - 1) == '0') {
701703
result = new java.math.BigDecimal(number);
702704
} else {
703705
result = Double.valueOf(number);

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

Lines changed: 66 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2280,6 +2280,11 @@ public Builder add(final Builder builder) {
22802280
return this;
22812281
}
22822282

2283+
public Builder add(final String key, final ArrayBuilder builder) {
2284+
data.put(key, builder.build());
2285+
return this;
2286+
}
2287+
22832288
@SuppressWarnings("unchecked")
22842289
public Map<String, Object> build() {
22852290
return (Map<String, Object>) ((LinkedHashMap) data).clone();
@@ -2310,4 +2315,65 @@ public String toString() {
23102315
return data.toString();
23112316
}
23122317
}
2318+
2319+
public static ArrayBuilder arrayBuilder() {
2320+
return new U.ArrayBuilder();
2321+
}
2322+
2323+
public static class ArrayBuilder {
2324+
private final List<Object> data;
2325+
public ArrayBuilder() {
2326+
data = newArrayList();
2327+
}
2328+
2329+
public ArrayBuilder add(final Object value) {
2330+
data.add(value);
2331+
return this;
2332+
}
2333+
2334+
public ArrayBuilder set(final int index, final Object value) {
2335+
data.set(index, value);
2336+
return this;
2337+
}
2338+
2339+
public ArrayBuilder add(final ArrayBuilder builder) {
2340+
data.addAll(builder.build());
2341+
return this;
2342+
}
2343+
2344+
public ArrayBuilder add(final Builder builder) {
2345+
data.add(builder.build());
2346+
return this;
2347+
}
2348+
2349+
@SuppressWarnings("unchecked")
2350+
public List<Object> build() {
2351+
return (List<Object>) ((ArrayList) data).clone();
2352+
}
2353+
2354+
public String toXml() {
2355+
return Xml.toXml(data);
2356+
}
2357+
2358+
public static ArrayBuilder fromXml(final String xml) {
2359+
final ArrayBuilder builder = new ArrayBuilder();
2360+
builder.data.addAll(U.<List<Object>>fromXml(xml));
2361+
return builder;
2362+
}
2363+
2364+
public String toJson() {
2365+
return Json.toJson(data);
2366+
}
2367+
2368+
public static ArrayBuilder fromJson(final String json) {
2369+
final ArrayBuilder builder = new ArrayBuilder();
2370+
builder.data.addAll(U.<List<Object>>fromJson(json));
2371+
return builder;
2372+
}
2373+
2374+
@Override
2375+
public String toString() {
2376+
return data.toString();
2377+
}
2378+
}
23132379
}

0 commit comments

Comments
 (0)