Skip to content

Commit

Permalink
Add converter in filter and discard.
Browse files Browse the repository at this point in the history
  • Loading branch information
cao-awa committed Aug 31, 2024
1 parent 42fb274 commit 99978e2
Show file tree
Hide file tree
Showing 6 changed files with 195 additions and 0 deletions.
44 changes: 44 additions & 0 deletions src/main/java/com/github/cao/awa/catheter/BooleanCatheter.java
Original file line number Diff line number Diff line change
Expand Up @@ -167,10 +167,47 @@ public BooleanCatheter pluck(final IntegerAndBiBooleanPredicate maker) {
});
}

public BooleanCatheter discard(final BooleanPredicate predicate) {
return overallFilter((index, item) -> !predicate.test(item));
}

public <X> BooleanCatheter discard(final Predicate<X> predicate, BooleanFunction<X> converter) {
return overallFilter((index, item) -> !predicate.test(converter.apply(item)));
}

public BooleanCatheter discard(final boolean initializer, final BiBooleanPredicate predicate) {
return overallFilter((index, item) -> !predicate.test(item, initializer));
}

public BooleanCatheter orDiscard(final boolean succeed, final BooleanPredicate predicate) {
if (succeed) {
return this;
}
return discard(predicate);
}

public <X> BooleanCatheter orDiscard(final boolean succeed, final Predicate<X> predicate, BooleanFunction<X> converter) {
if (succeed) {
return this;
}
return discard(predicate, converter);
}

public BooleanCatheter orDiscard(final boolean succeed, final boolean initializer, final BiBooleanPredicate predicate) {
if (succeed) {
return this;
}
return discard(initializer, predicate);
}

public BooleanCatheter filter(final BooleanPredicate predicate) {
return overallFilter((index, item) -> predicate.test(item));
}

public <X> BooleanCatheter filter(final Predicate<X> predicate, BooleanFunction<X> converter) {
return overallFilter((index, item) -> predicate.test(converter.apply(item)));
}

/**
* Holding items that matched given predicate.
*
Expand Down Expand Up @@ -241,6 +278,13 @@ public BooleanCatheter orFilter(final boolean succeed, final BooleanPredicate pr
return filter(predicate);
}

public <X> BooleanCatheter orFilter(final boolean succeed, final Predicate<X> predicate, BooleanFunction<X> converter) {
if (succeed) {
return this;
}
return filter(predicate, converter);
}

public BooleanCatheter orFilter(final boolean succeed, final boolean initializer, final BiBooleanPredicate predicate) {
if (succeed) {
return this;
Expand Down
44 changes: 44 additions & 0 deletions src/main/java/com/github/cao/awa/catheter/ByteCatheter.java
Original file line number Diff line number Diff line change
Expand Up @@ -166,10 +166,47 @@ public ByteCatheter pluck(final IntegerAndBiBytePredicate maker) {
});
}

public ByteCatheter discard(final BytePredicate predicate) {
return overallFilter((index, item) -> !predicate.test(item));
}

public <X> ByteCatheter discard(final Predicate<X> predicate, ByteFunction<X> converter) {
return overallFilter((index, item) -> !predicate.test(converter.apply(item)));
}

public ByteCatheter discard(final byte initializer, final BiBytePredicate predicate) {
return overallFilter((index, item) -> !predicate.test(item, initializer));
}

public ByteCatheter orDiscard(final boolean succeed, final BytePredicate predicate) {
if (succeed) {
return this;
}
return discard(predicate);
}

public <X> ByteCatheter orDiscard(final boolean succeed, final Predicate<X> predicate, ByteFunction<X> converter) {
if (succeed) {
return this;
}
return discard(predicate, converter);
}

public ByteCatheter orDiscard(final boolean succeed, final byte initializer, final BiBytePredicate predicate) {
if (succeed) {
return this;
}
return discard(initializer, predicate);
}

public ByteCatheter filter(final BytePredicate predicate) {
return overallFilter((index, item) -> predicate.test(item));
}

public <X> ByteCatheter filter(final Predicate<X> predicate, ByteFunction<X> converter) {
return overallFilter((index, item) -> predicate.test(converter.apply(item)));
}

/**
* Holding items that matched given predicate.
*
Expand Down Expand Up @@ -240,6 +277,13 @@ public ByteCatheter orFilter(final boolean succeed, final BytePredicate predicat
return filter(predicate);
}

public <X> ByteCatheter orFilter(final boolean succeed, final Predicate<X> predicate, ByteFunction<X> converter) {
if (succeed) {
return this;
}
return filter(predicate, converter);
}

public ByteCatheter orFilter(final boolean succeed, final byte initializer, final BiBytePredicate predicate) {
if (succeed) {
return this;
Expand Down
41 changes: 41 additions & 0 deletions src/main/java/com/github/cao/awa/catheter/Catheter.java
Original file line number Diff line number Diff line change
Expand Up @@ -306,6 +306,10 @@ public Catheter<T> pluck(final IntegerAndBiExtraPredicate<? super T> maker) {
});
}

public <X> Catheter<T> discard(final Predicate<X> predicate, Function<? super T, X> converter) {
return overallFilter((index, item) -> !predicate.test(converter.apply(item)));
}

public Catheter<T> discard(final Predicate<? super T> predicate) {
return overallFilter((index, item) -> !predicate.test(item));
}
Expand Down Expand Up @@ -340,6 +344,23 @@ public Catheter<T> orDiscard(final boolean succeed, final Predicate<? super T> p
return discard(predicate);
}

/**
* Discarding items that matched given predicate.
*
* @param succeed Direct done discard? When succeed true, cancel filter instantly
* @param predicate The filter predicate
* @param converter The converter that make T vary to X
* @return This {@code Catheter<T>}
* @author 草
* @since 1.0.0
*/
public <X> Catheter<T> orDiscard(final boolean succeed, final Predicate<X> predicate, Function<? super T, X> converter) {
if (succeed) {
return this;
}
return discard(predicate, converter);
}

/**
* Discarding items that matched given predicate.
*
Expand All @@ -359,6 +380,10 @@ public <X> Catheter<T> orDiscard(final boolean succeed, final X initializer, fin
return discard(initializer, predicate);
}

public <X> Catheter<T> filter(final Predicate<X> predicate, Function<? super T, X> converter) {
return overallFilter((index, item) -> predicate.test(converter.apply(item)));
}

public Catheter<T> filter(final Predicate<? super T> predicate) {
return overallFilter((index, item) -> predicate.test(item));
}
Expand Down Expand Up @@ -456,6 +481,22 @@ public Catheter<T> orFilter(final boolean succeed, final Predicate<? super T> pr
return filter(predicate);
}

/**
* Holding items that matched given predicate.
*
* @param succeed Direct done filter? When succeed true, cancel filter instantly
* @param predicate The filter predicate
* @return This {@code Catheter<T>}
* @author 草
* @since 1.0.0
*/
public <X> Catheter<T> orFilter(final boolean succeed, final Predicate<X> predicate, Function<? super T, X> converter) {
if (succeed) {
return this;
}
return filter(predicate, converter);
}

/**
* Holding items that matched given predicate.
*
Expand Down
22 changes: 22 additions & 0 deletions src/main/java/com/github/cao/awa/catheter/DoubleCatheter.java
Original file line number Diff line number Diff line change
Expand Up @@ -170,6 +170,10 @@ public DoubleCatheter discard(final DoublePredicate predicate) {
return overallFilter((index, item) -> !predicate.test(item));
}

public <X> DoubleCatheter discard(final Predicate<X> predicate, DoubleFunction<X> converter) {
return overallFilter((index, item) -> !predicate.test(converter.apply(item)));
}

public DoubleCatheter discard(final double initializer, final BiDoublePredicate predicate) {
return overallFilter((index, item) -> !predicate.test(item, initializer));
}
Expand All @@ -181,6 +185,13 @@ public DoubleCatheter orDiscard(final boolean succeed, final DoublePredicate pre
return discard(predicate);
}

public <X> DoubleCatheter orDiscard(final boolean succeed, final Predicate<X> predicate, DoubleFunction<X> converter) {
if (succeed) {
return this;
}
return discard(predicate, converter);
}

public DoubleCatheter orDiscard(final boolean succeed, final double initializer, final BiDoublePredicate predicate) {
if (succeed) {
return this;
Expand All @@ -192,6 +203,10 @@ public DoubleCatheter filter(final DoublePredicate predicate) {
return overallFilter((index, item) -> predicate.test(item));
}

public <X> DoubleCatheter filter(final Predicate<X> predicate, DoubleFunction<X> converter) {
return overallFilter((index, item) -> predicate.test(converter.apply(item)));
}

public DoubleCatheter filter(final double initializer, final BiDoublePredicate predicate) {
return overallFilter((index, item) -> predicate.test(item, initializer));
}
Expand All @@ -203,6 +218,13 @@ public DoubleCatheter orFilter(final boolean succeed, final DoublePredicate pred
return filter(predicate);
}

public <X> DoubleCatheter orFilter(final boolean succeed, final Predicate<X> predicate, DoubleFunction<X> converter) {
if (succeed) {
return this;
}
return filter(predicate, converter);
}

public DoubleCatheter orFilter(final boolean succeed, final double initializer, final BiDoublePredicate predicate) {
if (succeed) {
return this;
Expand Down
22 changes: 22 additions & 0 deletions src/main/java/com/github/cao/awa/catheter/IntCatheter.java
Original file line number Diff line number Diff line change
Expand Up @@ -169,6 +169,10 @@ public IntCatheter discard(final IntPredicate predicate) {
return overallFilter((index, item) -> !predicate.test(item));
}

public <X> IntCatheter discard(final Predicate<X> predicate, IntFunction<X> converter) {
return overallFilter((index, item) -> !predicate.test(converter.apply(item)));
}

public IntCatheter discard(final int initializer, final BiIntegerPredicate predicate) {
return overallFilter((index, item) -> !predicate.test(item, initializer));
}
Expand All @@ -180,6 +184,13 @@ public IntCatheter orDiscard(final boolean succeed, final IntPredicate predicate
return discard(predicate);
}

public <X> IntCatheter orDiscard(final boolean succeed, final Predicate<X> predicate, IntFunction<X> converter) {
if (succeed) {
return this;
}
return discard(predicate, converter);
}

public IntCatheter orDiscard(final boolean succeed, final int initializer, final BiIntegerPredicate predicate) {
if (succeed) {
return this;
Expand All @@ -191,6 +202,10 @@ public IntCatheter filter(final IntPredicate predicate) {
return overallFilter((index, item) -> predicate.test(item));
}

public <X> IntCatheter filter(final Predicate<X> predicate, IntFunction<X> converter) {
return overallFilter((index, item) -> predicate.test(converter.apply(item)));
}

public IntCatheter filter(final int initializer, final BiIntegerPredicate predicate) {
return overallFilter((index, item) -> predicate.test(item, initializer));
}
Expand All @@ -202,6 +217,13 @@ public IntCatheter orFilter(final boolean succeed, final IntPredicate predicate)
return filter(predicate);
}

public <X> IntCatheter orFilter(final boolean succeed, final Predicate<X> predicate, IntFunction<X> converter) {
if (succeed) {
return this;
}
return filter(predicate, converter);
}

public IntCatheter orFilter(final boolean succeed, final int initializer, final BiIntegerPredicate predicate) {
if (succeed) {
return this;
Expand Down
22 changes: 22 additions & 0 deletions src/main/java/com/github/cao/awa/catheter/LongCatheter.java
Original file line number Diff line number Diff line change
Expand Up @@ -170,6 +170,10 @@ public LongCatheter discard(final LongPredicate predicate) {
return overallFilter((index, item) -> !predicate.test(item));
}

public <X> LongCatheter discard(final Predicate<X> predicate, LongFunction<X> converter) {
return overallFilter((index, item) -> !predicate.test(converter.apply(item)));
}

public LongCatheter discard(final long initializer, final BiLongPredicate predicate) {
return overallFilter((index, item) -> !predicate.test(item, initializer));
}
Expand All @@ -181,6 +185,13 @@ public LongCatheter orDiscard(final boolean succeed, final LongPredicate predica
return discard(predicate);
}

public <X> LongCatheter orDiscard(final boolean succeed, final Predicate<X> predicate, LongFunction<X> converter) {
if (succeed) {
return this;
}
return discard(predicate, converter);
}

public LongCatheter orDiscard(final boolean succeed, final long initializer, final BiLongPredicate predicate) {
if (succeed) {
return this;
Expand All @@ -192,6 +203,10 @@ public LongCatheter filter(final LongPredicate predicate) {
return overallFilter((index, item) -> predicate.test(item));
}

public <X> LongCatheter filter(final Predicate<X> predicate, LongFunction<X> converter) {
return overallFilter((index, item) -> predicate.test(converter.apply(item)));
}

public LongCatheter filter(final long initializer, final BiLongPredicate predicate) {
return overallFilter((index, item) -> predicate.test(item, initializer));
}
Expand All @@ -203,6 +218,13 @@ public LongCatheter orFilter(final boolean succeed, final LongPredicate predicat
return filter(predicate);
}

public <X> LongCatheter orFilter(final boolean succeed, final Predicate<X> predicate, LongFunction<X> converter) {
if (succeed) {
return this;
}
return filter(predicate, converter);
}

public LongCatheter orFilter(final boolean succeed, final long initializer, final BiLongPredicate predicate) {
if (succeed) {
return this;
Expand Down

0 comments on commit 99978e2

Please sign in to comment.