Skip to content

Commit 27ee5e9

Browse files
committed
Add support for sort() and join() methods
1 parent 98123ad commit 27ee5e9

File tree

3 files changed

+53
-0
lines changed

3 files changed

+53
-0
lines changed

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

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -997,6 +997,35 @@ public T apply() {
997997
};
998998
}
999999

1000+
public static <T extends Comparable<T>> List<T> sort(final List<T> list) {
1001+
final List<T> localList = new ArrayList<T>(list);
1002+
Collections.<T>sort(localList);
1003+
return localList;
1004+
}
1005+
1006+
public static <T extends Comparable<T>> T[] sort(final T[] array) {
1007+
final T[] localArray = array.clone();
1008+
Arrays.<T>sort(localArray);
1009+
return localArray;
1010+
}
1011+
1012+
public static <T> String join(final Iterable<T> iterable, final String separator) {
1013+
final StringBuilder sb = new StringBuilder();
1014+
each(iterable, new Block<T>() {
1015+
public void apply(T item) {
1016+
if (!sb.toString().isEmpty()) {
1017+
sb.append(separator);
1018+
}
1019+
sb.append(item.toString());
1020+
}
1021+
});
1022+
return sb.toString();
1023+
}
1024+
1025+
public static <T> String join(final T[] array, final String separator) {
1026+
return join(Arrays.asList(array), separator);
1027+
}
1028+
10001029
public static void main(String[] args) {
10011030
final String message = "Underscore-java is a java port of Underscore.js.\n\n"
10021031
+ "In addition to porting Underscore's functionality, Underscore-java includes matching unit tests.\n\n"

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

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1385,4 +1385,28 @@ public void main() throws Exception {
13851385
_.main(new String[] {});
13861386
}
13871387

1388+
/*
1389+
['some', 'words', 'example'].sort();
1390+
=> ['example', 'some', 'words']
1391+
*/
1392+
@Test
1393+
public void sort() throws Exception {
1394+
assertEquals("[example, some, words]", _.sort(Arrays.asList("some", "words", "example")).toString());
1395+
assertEquals("[example, some, words]", asList(_.sort(new String[] {"some", "words", "example"})).toString());
1396+
}
1397+
1398+
/*
1399+
['some', 'words', 'example'].join('-');
1400+
=> 'some-words-example'
1401+
*/
1402+
@Test
1403+
public void join() throws Exception {
1404+
assertEquals("some-words-example", _.join(Arrays.asList("some", "words", "example"), "-"));
1405+
assertEquals("some-words-example", _.join(new String[] {"some", "words", "example"}, "-"));
1406+
}
1407+
1408+
@Test
1409+
public void compareStrings() throws Exception {
1410+
assertEquals(_.sort("CAT".split("")), _.sort("CTA".split("")));
1411+
}
13881412
}

underscore.jar

686 Bytes
Binary file not shown.

0 commit comments

Comments
 (0)