Skip to content

Commit 762cc11

Browse files
committed
Add U.objectBuilder().
1 parent 54fcd2f commit 762cc11

File tree

3 files changed

+64
-2
lines changed

3 files changed

+64
-2
lines changed

.travis.yml

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -22,5 +22,4 @@ before_script:
2222
after_success:
2323
- codecov
2424
- python <(curl -s https://raw.githubusercontent.com/TouK/sputnik-ci/master/sputnik-ci.py)
25-
- test $TRAVIS_BRANCH = "master"
26-
mvn sonar:sonar -Dsonar.projectKey=javadev_underscore-java -Dsonar.organization=javadev-github -Dsonar.host.url=https://sonarcloud.io -Dsonar.login=$SONAR_LOGIN
25+
- mvn sonar:sonar -Dsonar.projectKey=javadev_underscore-java -Dsonar.organization=javadev-github -Dsonar.host.url=https://sonarcloud.io -Dsonar.login=$SONAR_LOGIN

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

Lines changed: 50 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2251,4 +2251,54 @@ private static Object makeObjectSelfClose(Object value) {
22512251
return result;
22522252
}
22532253

2254+
public static Builder objectBuilder() {
2255+
return new U.Builder();
2256+
}
2257+
2258+
public static class Builder {
2259+
private final Map<String, Object> data;
2260+
public Builder() {
2261+
data = newLinkedHashMap();
2262+
}
2263+
2264+
public Builder add(final String key, final Object value) {
2265+
data.put(key, value);
2266+
return this;
2267+
}
2268+
2269+
public Builder add(final Object value) {
2270+
data.put(String.valueOf(data.size()), value);
2271+
return this;
2272+
}
2273+
2274+
public Builder add(final Builder builder) {
2275+
data.putAll(builder.data);
2276+
return this;
2277+
}
2278+
2279+
@SuppressWarnings("unchecked")
2280+
public Map<String, Object> build() {
2281+
return (Map<String, Object>) ((LinkedHashMap) data).clone();
2282+
}
2283+
2284+
public String toXml() {
2285+
return Xml.toXml(data);
2286+
}
2287+
2288+
public static Builder fromXml(final String xml) {
2289+
final Builder builder = new Builder();
2290+
builder.data.putAll(fromXmlMap(xml));
2291+
return builder;
2292+
}
2293+
2294+
public String toJson() {
2295+
return Xml.toXml(data);
2296+
}
2297+
2298+
public static Builder fromJson(final String json) {
2299+
final Builder builder = new Builder();
2300+
builder.data.putAll(fromJsonMap(json));
2301+
return builder;
2302+
}
2303+
}
22542304
}

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

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -754,6 +754,18 @@ public void removeMinusesAndConvertNumbers() {
754754
assertEquals("{list=[[]]}", result10.toString());
755755
}
756756

757+
758+
@Test
759+
public void objectBuilder() {
760+
U.Builder builder = U.objectBuilder().add("1", "2").add("2");
761+
builder.add(builder);
762+
builder.toJson();
763+
U.Builder.fromJson("{}");
764+
builder.toXml();
765+
U.Builder.fromXml("<a/>");
766+
assertEquals("{1=2}", builder.build().toString());
767+
}
768+
757769
@SuppressWarnings("unchecked")
758770
@Test
759771
public void main() {
@@ -1021,6 +1033,7 @@ public void sqlru1() {
10211033

10221034
@Test
10231035
public void sqlru2() {
1036+
// https://www.sql.ru/forum/1321326/kolichestvo-naydennyh-slov-v-stroke
10241037
assertEquals(2, U.countBy(U.words("Маша ищет Мишу а Миша ищет Машу")).get("ищет").intValue());
10251038
}
10261039
}

0 commit comments

Comments
 (0)