Skip to content

Commit e90f9eb

Browse files
authored
Add filterFalse(list, pred) method support.
1 parent e7138d2 commit e90f9eb

File tree

9 files changed

+86
-0
lines changed

9 files changed

+86
-0
lines changed

lodash-plugin/src/main/java/com/github/underscore/lodash/$.java

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -177,6 +177,10 @@ public Chain<T> reject(final Predicate<T> pred) {
177177
return new Chain<T>($.reject(value(), pred));
178178
}
179179

180+
public Chain<T> filterFalse(final Predicate<T> pred) {
181+
return new Chain<T>($.filterFalse(value(), pred));
182+
}
183+
180184
public <F> Chain<F> reduce(final FunctionAccum<F, T> func, final F zeroElem) {
181185
return new Chain<F>($.reduce(value(), func, zeroElem));
182186
}

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

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -612,6 +612,8 @@ public void chain() {
612612
public Boolean apply(String str) { return true; } });
613613
$.chain(new String[] {""}).rejectIndexed(new PredicateIndexed<String>() {
614614
public boolean apply(int index, String str) { return true; } });
615+
$.chain(new String[] {""}).filterFalse(new Predicate<String>() {
616+
public Boolean apply(String str) { return true; } });
615617
$.chain(new String[] {""}).reduce(new FunctionAccum<String, String>() {
616618
public String apply(String accum, String str) { return null; } }, "");
617619
$.chain(new String[] {""}).reduceRight(new FunctionAccum<String, String>() {

math-plugin/src/main/java/com/github/underscore/math/$.java

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -131,6 +131,10 @@ public Chain<T> reject(final Predicate<T> pred) {
131131
return new Chain<T>($.reject(value(), pred));
132132
}
133133

134+
public Chain<T> filterFalse(final Predicate<T> pred) {
135+
return new Chain<T>($.filterFalse(value(), pred));
136+
}
137+
134138
public <F> Chain<F> reduce(final FunctionAccum<F, T> func, final F zeroElem) {
135139
return new Chain<F>($.reduce(value(), func, zeroElem));
136140
}

math-plugin/src/test/java/com/github/underscore/math/MathTest.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -287,6 +287,8 @@ public void chain() {
287287
public Boolean apply(String str) { return true; } });
288288
$.chain(new String[] {""}).rejectIndexed(new PredicateIndexed<String>() {
289289
public boolean apply(int index, String str) { return true; } });
290+
$.chain(new String[] {""}).filterFalse(new Predicate<String>() {
291+
public Boolean apply(String str) { return true; } });
290292
$.chain(new String[] {""}).reduce(new FunctionAccum<String, String>() {
291293
public String apply(String accum, String str) { return null; } }, "");
292294
$.chain(new String[] {""}).reduceRight(new FunctionAccum<String, String>() {

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

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -396,6 +396,18 @@ public Boolean apply(E input) {
396396
});
397397
}
398398

399+
public static <E> List<E> filterFalse(final List<E> list, final Predicate<E> pred) {
400+
return reject(list, pred);
401+
}
402+
403+
public List<T> filterFalse(final Predicate<T> pred) {
404+
return reject(pred);
405+
}
406+
407+
public static <E> Set<E> filterFalse(final Set<E> set, final Predicate<E> pred) {
408+
return reject(set, pred);
409+
}
410+
399411
public static <E> boolean every(final Iterable<E> iterable, final Predicate<E> pred) {
400412
return !find(iterable, new Predicate<E>() {
401413
@Override
@@ -2065,6 +2077,10 @@ public Chain<T> rejectIndexed(final PredicateIndexed<T> pred) {
20652077
return new Chain<T>($.rejectIndexed(list, pred));
20662078
}
20672079

2080+
public Chain<T> filterFalse(final Predicate<T> pred) {
2081+
return new Chain<T>($.reject(list, pred));
2082+
}
2083+
20682084
public <F> Chain<F> reduce(final FunctionAccum<F, T> func, final F zeroElem) {
20692085
return new Chain<F>($.reduce(list, func, zeroElem));
20702086
}

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

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -441,6 +441,28 @@ public Character apply(final String name) {
441441
assertEquals(4, result.size());
442442
}
443443

444+
@Test
445+
@SuppressWarnings("unchecked")
446+
public void chain9() {
447+
final List<Comparable> result = $.chain($.chain($.class.getDeclaredMethods())
448+
.reduce(new FunctionAccum<List<String>, Method>() {
449+
public List<String> apply(final List<String> accum, final Method method) {
450+
accum.add(method.getName());
451+
return accum;
452+
}
453+
}, new ArrayList<String>()).item())
454+
.filterFalse(new Predicate<String>() {
455+
public Boolean apply(final String name) {
456+
return name.contains("$");
457+
}
458+
})
459+
.uniq()
460+
.sort()
461+
.first(4)
462+
.value();
463+
assertEquals(4, result.size());
464+
}
465+
444466
@Test
445467
public void chainToMap() {
446468
assertEquals("{name1=one, name2=two}", $.chain((new LinkedHashMap<String, String>() { {

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

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -518,6 +518,36 @@ public Boolean apply(Integer item) {
518518
assertEquals("[2, 4, 6]", resultObject.toString());
519519
}
520520

521+
/*
522+
var evens = _.filterFalse([1, 2, 3, 4, 5, 6], function(num){ return num % 2 == 0; });
523+
=> [1, 3, 5]
524+
*/
525+
@Test
526+
@SuppressWarnings("unchecked")
527+
public void filterFalse() {
528+
final List<Integer> result = $.filterFalse(asList(1, 2, 3, 4, 5, 6),
529+
new Predicate<Integer>() {
530+
public Boolean apply(Integer item) {
531+
return item % 2 == 0;
532+
}
533+
});
534+
assertEquals("[1, 3, 5]", result.toString());
535+
final List<Integer> resultObject = new $<Integer>(asList(1, 2, 3, 4, 5, 6))
536+
.filterFalse(new Predicate<Integer>() {
537+
public Boolean apply(Integer item) {
538+
return item % 2 == 0;
539+
}
540+
});
541+
assertEquals("[1, 3, 5]", resultObject.toString());
542+
final Set<Integer> resultSet = $.filterFalse(new LinkedHashSet(asList(1, 2, 3, 4, 5, 6)),
543+
new Predicate<Integer>() {
544+
public Boolean apply(Integer item) {
545+
return item % 2 == 0;
546+
}
547+
});
548+
assertEquals("[1, 3, 5]", resultSet.toString());
549+
}
550+
521551
/*
522552
var evens = _.filterIndexed([1, 2, 3, 4, 5, 6], function(index, num){ return index !== 1 && num % 2 == 0; });
523553
=> [4, 6]

string-plugin/src/main/java/com/github/underscore/string/$.java

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -168,6 +168,10 @@ public Chain<T> reject(final Predicate<T> pred) {
168168
return new Chain<T>($.reject(value(), pred));
169169
}
170170

171+
public Chain<T> filterFalse(final Predicate<T> pred) {
172+
return new Chain<T>($.filterFalse(value(), pred));
173+
}
174+
171175
public <F> Chain<F> reduce(final FunctionAccum<F, T> func, final F zeroElem) {
172176
return new Chain<F>($.reduce(value(), func, zeroElem));
173177
}

string-plugin/src/test/java/com/github/underscore/string/StringTest.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1986,6 +1986,8 @@ public void chain() {
19861986
public Boolean apply(String str) { return true; } });
19871987
$.chain(new String[] {""}).rejectIndexed(new PredicateIndexed<String>() {
19881988
public boolean apply(int index, String str) { return true; } });
1989+
$.chain(new String[] {""}).filterFalse(new Predicate<String>() {
1990+
public Boolean apply(String str) { return true; } });
19891991
$.chain(new String[] {""}).reduce(new FunctionAccum<String, String>() {
19901992
public String apply(String accum, String str) { return null; } }, "");
19911993
$.chain(new String[] {""}).reduceRight(new FunctionAccum<String, String>() {

0 commit comments

Comments
 (0)