mirror of
https://github.com/Card-Forge/forge.git
synced 2025-11-19 20:28:00 +00:00
Guava migration - Inline Predicates.alwaysTrue
This commit is contained in:
@@ -786,7 +786,7 @@ public final class CardDb implements ICardDatabase, IDeckGenPool {
|
|||||||
|
|
||||||
List<PaperCard> cards;
|
List<PaperCard> cards;
|
||||||
Predicate<PaperCard> cardQueryFilter;
|
Predicate<PaperCard> cardQueryFilter;
|
||||||
filter = (filter != null) ? filter : Predicates.alwaysTrue();
|
filter = filter != null ? filter : (x -> true);
|
||||||
if (releaseDate != null) {
|
if (releaseDate != null) {
|
||||||
cardQueryFilter = c -> {
|
cardQueryFilter = c -> {
|
||||||
if (c.getArtIndex() != cr.artIndex)
|
if (c.getArtIndex() != cr.artIndex)
|
||||||
|
|||||||
@@ -43,14 +43,14 @@ public interface IPaperCard extends InventoryItem, Serializable {
|
|||||||
|
|
||||||
public static Predicate<PaperCard> printedInSets(final List<String> value, final boolean shouldContain) {
|
public static Predicate<PaperCard> printedInSets(final List<String> value, final boolean shouldContain) {
|
||||||
if ((value == null) || value.isEmpty()) {
|
if ((value == null) || value.isEmpty()) {
|
||||||
return forge.util.Predicates.alwaysTrue();
|
return x -> true;
|
||||||
}
|
}
|
||||||
return new PredicateSets(value, shouldContain);
|
return new PredicateSets(value, shouldContain);
|
||||||
}
|
}
|
||||||
|
|
||||||
public static Predicate<PaperCard> printedInSet(final String value) {
|
public static Predicate<PaperCard> printedInSet(final String value) {
|
||||||
if (StringUtils.isEmpty(value)) {
|
if (StringUtils.isEmpty(value)) {
|
||||||
return forge.util.Predicates.alwaysTrue();
|
return x -> true;
|
||||||
}
|
}
|
||||||
return new PredicateSets(Lists.newArrayList(value), true);
|
return new PredicateSets(Lists.newArrayList(value), true);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -568,7 +568,7 @@ public class BoosterGenerator {
|
|||||||
public static PrintSheet makeSheet(String sheetKey, Iterable<PaperCard> src) {
|
public static PrintSheet makeSheet(String sheetKey, Iterable<PaperCard> src) {
|
||||||
PrintSheet ps = new PrintSheet(sheetKey);
|
PrintSheet ps = new PrintSheet(sheetKey);
|
||||||
String[] sKey = TextUtil.splitWithParenthesis(sheetKey, ' ', 2);
|
String[] sKey = TextUtil.splitWithParenthesis(sheetKey, ' ', 2);
|
||||||
Predicate<PaperCard> setPred = (Predicate<PaperCard>) (sKey.length > 1 ? IPaperCard.Predicates.printedInSets(sKey[1].split(" ")) : Predicates.alwaysTrue());
|
Predicate<PaperCard> setPred = sKey.length > 1 ? IPaperCard.Predicates.printedInSets(sKey[1].split(" ")) : x1 -> true;
|
||||||
|
|
||||||
List<String> operators = new LinkedList<>(Arrays.asList(TextUtil.splitWithParenthesis(sKey[0], ':')));
|
List<String> operators = new LinkedList<>(Arrays.asList(TextUtil.splitWithParenthesis(sKey[0], ':')));
|
||||||
Predicate<PaperCard> extraPred = buildExtraPredicate(operators);
|
Predicate<PaperCard> extraPred = buildExtraPredicate(operators);
|
||||||
@@ -585,7 +585,7 @@ public class BoosterGenerator {
|
|||||||
String sheetName = StringUtils.strip(mainCode.substring(10), "()\" ");
|
String sheetName = StringUtils.strip(mainCode.substring(10), "()\" ");
|
||||||
System.out.println("Attempting to lookup: " + sheetName);
|
System.out.println("Attempting to lookup: " + sheetName);
|
||||||
src = StaticData.instance().getPrintSheets().get(sheetName).toFlatList();
|
src = StaticData.instance().getPrintSheets().get(sheetName).toFlatList();
|
||||||
setPred = Predicates.alwaysTrue();
|
setPred = x -> true;
|
||||||
|
|
||||||
} else if (mainCode.startsWith("promo") || mainCode.startsWith("name")) { // get exactly the named cards, that's a tiny inlined print sheet
|
} else if (mainCode.startsWith("promo") || mainCode.startsWith("name")) { // get exactly the named cards, that's a tiny inlined print sheet
|
||||||
String list = StringUtils.strip(mainCode.substring(5), "() ");
|
String list = StringUtils.strip(mainCode.substring(5), "() ");
|
||||||
@@ -597,7 +597,7 @@ public class BoosterGenerator {
|
|||||||
}
|
}
|
||||||
|
|
||||||
src = srcList;
|
src = srcList;
|
||||||
setPred = Predicates.alwaysTrue();
|
setPred = x -> true;
|
||||||
} else {
|
} else {
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
@@ -732,7 +732,7 @@ public class BoosterGenerator {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (conditions.isEmpty()) {
|
if (conditions.isEmpty()) {
|
||||||
return Predicates.alwaysTrue();
|
return x -> true;
|
||||||
}
|
}
|
||||||
|
|
||||||
return Predicates.and(conditions);
|
return Predicates.and(conditions);
|
||||||
|
|||||||
@@ -24,9 +24,7 @@ public class Predicates {
|
|||||||
|
|
||||||
|
|
||||||
//TODO: Inline everything below.
|
//TODO: Inline everything below.
|
||||||
public static <T> Predicate<T> alwaysTrue() {
|
|
||||||
return x -> true;
|
|
||||||
}
|
|
||||||
public static <T> Predicate<T> not(Predicate<T> predicate) {
|
public static <T> Predicate<T> not(Predicate<T> predicate) {
|
||||||
return predicate.negate();
|
return predicate.negate();
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -112,7 +112,7 @@ public class ChooseCardNameEffect extends SpellAbilityEffect {
|
|||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
// use CardFace because you might name a alternate names
|
// use CardFace because you might name a alternate names
|
||||||
Predicate<ICardFace> cpp = Predicates.alwaysTrue();
|
Predicate<ICardFace> cpp = x -> true;
|
||||||
if (sa.hasParam("ValidCards")) {
|
if (sa.hasParam("ValidCards")) {
|
||||||
//Calculating/replacing this must happen before running valid in CardFacePredicates
|
//Calculating/replacing this must happen before running valid in CardFacePredicates
|
||||||
if (valid.contains("cmcEQ") && !StringUtils.isNumeric(valid.split("cmcEQ")[1])) {
|
if (valid.contains("cmcEQ") && !StringUtils.isNumeric(valid.split("cmcEQ")[1])) {
|
||||||
|
|||||||
@@ -212,7 +212,7 @@ public class CardFactoryUtil {
|
|||||||
public static boolean handleHiddenAgenda(Player player, Card card) {
|
public static boolean handleHiddenAgenda(Player player, Card card) {
|
||||||
SpellAbility sa = new SpellAbility.EmptySa(card);
|
SpellAbility sa = new SpellAbility.EmptySa(card);
|
||||||
sa.putParam("AILogic", card.getSVar("AgendaLogic"));
|
sa.putParam("AILogic", card.getSVar("AgendaLogic"));
|
||||||
Predicate<ICardFace> cpp = Predicates.alwaysTrue();
|
Predicate<ICardFace> cpp = x -> true;
|
||||||
//Predicate<Card> pc = Predicates.in(player.getAllCards());
|
//Predicate<Card> pc = Predicates.in(player.getAllCards());
|
||||||
// TODO This would be better to send in the player's deck, not all cards
|
// TODO This would be better to send in the player's deck, not all cards
|
||||||
String name = player.getController().chooseCardName(sa, cpp, "Card",
|
String name = player.getController().chooseCardName(sa, cpp, "Card",
|
||||||
|
|||||||
@@ -26,7 +26,7 @@ public enum AttackRestrictionType {
|
|||||||
// may explicitly not be black/green itself
|
// may explicitly not be black/green itself
|
||||||
Predicates.not(Predicates.equalTo(attacker)));
|
Predicates.not(Predicates.equalTo(attacker)));
|
||||||
case NOT_ALONE:
|
case NOT_ALONE:
|
||||||
return Predicates.alwaysTrue();
|
return x -> true;
|
||||||
default:
|
default:
|
||||||
}
|
}
|
||||||
return null;
|
return null;
|
||||||
|
|||||||
@@ -31,7 +31,7 @@ public class CardCMCRangeFilter extends ValueRangeFilter<PaperCard> {
|
|||||||
protected Predicate<PaperCard> buildPredicate() {
|
protected Predicate<PaperCard> buildPredicate() {
|
||||||
Predicate<CardRules> predicate = getCardRulesFieldPredicate(CardRulesPredicates.LeafNumber.CardField.CMC);
|
Predicate<CardRules> predicate = getCardRulesFieldPredicate(CardRulesPredicates.LeafNumber.CardField.CMC);
|
||||||
if (predicate == null) {
|
if (predicate == null) {
|
||||||
return Predicates.alwaysTrue();
|
return x -> true;
|
||||||
}
|
}
|
||||||
return Predicates.compose(predicate, PaperCard::getRules);
|
return Predicates.compose(predicate, PaperCard::getRules);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -31,7 +31,7 @@ public class CardPowerFilter extends ValueRangeFilter<PaperCard> {
|
|||||||
protected Predicate<PaperCard> buildPredicate() {
|
protected Predicate<PaperCard> buildPredicate() {
|
||||||
Predicate<CardRules> predicate = getCardRulesFieldPredicate(CardRulesPredicates.LeafNumber.CardField.POWER);
|
Predicate<CardRules> predicate = getCardRulesFieldPredicate(CardRulesPredicates.LeafNumber.CardField.POWER);
|
||||||
if (predicate == null) {
|
if (predicate == null) {
|
||||||
return Predicates.alwaysTrue();
|
return x -> true;
|
||||||
}
|
}
|
||||||
predicate = Predicates.and(predicate, CardRulesPredicates.Presets.IS_CREATURE);
|
predicate = Predicates.and(predicate, CardRulesPredicates.Presets.IS_CREATURE);
|
||||||
return Predicates.compose(predicate, PaperCard::getRules);
|
return Predicates.compose(predicate, PaperCard::getRules);
|
||||||
|
|||||||
@@ -31,7 +31,7 @@ public class CardToughnessFilter extends ValueRangeFilter<PaperCard> {
|
|||||||
protected Predicate<PaperCard> buildPredicate() {
|
protected Predicate<PaperCard> buildPredicate() {
|
||||||
Predicate<CardRules> predicate = getCardRulesFieldPredicate(CardRulesPredicates.LeafNumber.CardField.TOUGHNESS);
|
Predicate<CardRules> predicate = getCardRulesFieldPredicate(CardRulesPredicates.LeafNumber.CardField.TOUGHNESS);
|
||||||
if (predicate == null) {
|
if (predicate == null) {
|
||||||
return Predicates.alwaysTrue();
|
return x -> true;
|
||||||
}
|
}
|
||||||
predicate = Predicates.and(predicate, CardRulesPredicates.Presets.IS_CREATURE);
|
predicate = Predicates.and(predicate, CardRulesPredicates.Presets.IS_CREATURE);
|
||||||
return Predicates.compose(predicate, PaperCard::getRules);
|
return Predicates.compose(predicate, PaperCard::getRules);
|
||||||
|
|||||||
@@ -14,7 +14,6 @@ import forge.itemmanager.SFilterUtil;
|
|||||||
import forge.toolbox.FTextField;
|
import forge.toolbox.FTextField;
|
||||||
import forge.toolbox.LayoutHelper;
|
import forge.toolbox.LayoutHelper;
|
||||||
import forge.util.Localizer;
|
import forge.util.Localizer;
|
||||||
import forge.util.Predicates;
|
|
||||||
|
|
||||||
|
|
||||||
public class TextSearchFilter<T extends InventoryItem> extends ItemFilter<T> {
|
public class TextSearchFilter<T extends InventoryItem> extends ItemFilter<T> {
|
||||||
@@ -113,7 +112,7 @@ public class TextSearchFilter<T extends InventoryItem> extends ItemFilter<T> {
|
|||||||
protected Predicate<T> buildPredicate() {
|
protected Predicate<T> buildPredicate() {
|
||||||
String text = txtSearch.getText();
|
String text = txtSearch.getText();
|
||||||
if (text.trim().isEmpty()) {
|
if (text.trim().isEmpty()) {
|
||||||
return Predicates.alwaysTrue();
|
return x -> true;
|
||||||
}
|
}
|
||||||
return SFilterUtil.buildItemTextFilter(text);
|
return SFilterUtil.buildItemTextFilter(text);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -28,7 +28,7 @@ public class CardCMCFilter extends ValueRangeFilter<PaperCard> {
|
|||||||
protected Predicate<PaperCard> buildPredicate() {
|
protected Predicate<PaperCard> buildPredicate() {
|
||||||
Predicate<CardRules> predicate = getCardRulesFieldPredicate(CardRulesPredicates.LeafNumber.CardField.CMC);
|
Predicate<CardRules> predicate = getCardRulesFieldPredicate(CardRulesPredicates.LeafNumber.CardField.CMC);
|
||||||
if (predicate == null) {
|
if (predicate == null) {
|
||||||
return Predicates.alwaysTrue();
|
return x -> true;
|
||||||
}
|
}
|
||||||
return Predicates.compose(predicate, PaperCard::getRules);
|
return Predicates.compose(predicate, PaperCard::getRules);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -28,7 +28,7 @@ public class CardColorlessCostFilter extends ValueRangeFilter<PaperCard> {
|
|||||||
protected Predicate<PaperCard> buildPredicate() {
|
protected Predicate<PaperCard> buildPredicate() {
|
||||||
Predicate<CardRules> predicate = getCardRulesFieldPredicate(CardRulesPredicates.LeafNumber.CardField.GENERIC_COST);
|
Predicate<CardRules> predicate = getCardRulesFieldPredicate(CardRulesPredicates.LeafNumber.CardField.GENERIC_COST);
|
||||||
if (predicate == null) {
|
if (predicate == null) {
|
||||||
return Predicates.alwaysTrue();
|
return x -> true;
|
||||||
}
|
}
|
||||||
return Predicates.compose(predicate, PaperCard::getRules);
|
return Predicates.compose(predicate, PaperCard::getRules);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -2,7 +2,6 @@ package forge.itemmanager.filters;
|
|||||||
|
|
||||||
import forge.item.PaperCard;
|
import forge.item.PaperCard;
|
||||||
import forge.itemmanager.ItemManager;
|
import forge.itemmanager.ItemManager;
|
||||||
import forge.util.Predicates;
|
|
||||||
|
|
||||||
import java.util.function.Predicate;
|
import java.util.function.Predicate;
|
||||||
|
|
||||||
@@ -22,7 +21,7 @@ public class CardFormatFilter extends FormatFilter<PaperCard> {
|
|||||||
@Override
|
@Override
|
||||||
protected final Predicate<PaperCard> buildPredicate() {
|
protected final Predicate<PaperCard> buildPredicate() {
|
||||||
if (format == null) {
|
if (format == null) {
|
||||||
return Predicates.alwaysTrue();
|
return x -> true;
|
||||||
}
|
}
|
||||||
if (format.getName() == null) {
|
if (format.getName() == null) {
|
||||||
return format.getFilterPrinted(); //if format is collection of sets, don't show reprints in other sets
|
return format.getFilterPrinted(); //if format is collection of sets, don't show reprints in other sets
|
||||||
|
|||||||
@@ -28,7 +28,7 @@ public class CardPowerFilter extends ValueRangeFilter<PaperCard> {
|
|||||||
protected Predicate<PaperCard> buildPredicate() {
|
protected Predicate<PaperCard> buildPredicate() {
|
||||||
Predicate<CardRules> predicate = getCardRulesFieldPredicate(CardRulesPredicates.LeafNumber.CardField.POWER);
|
Predicate<CardRules> predicate = getCardRulesFieldPredicate(CardRulesPredicates.LeafNumber.CardField.POWER);
|
||||||
if (predicate == null) {
|
if (predicate == null) {
|
||||||
return Predicates.alwaysTrue();
|
return x -> true;
|
||||||
}
|
}
|
||||||
predicate = Predicates.and(predicate, CardRulesPredicates.Presets.IS_CREATURE);
|
predicate = Predicates.and(predicate, CardRulesPredicates.Presets.IS_CREATURE);
|
||||||
return Predicates.compose(predicate, PaperCard::getRules);
|
return Predicates.compose(predicate, PaperCard::getRules);
|
||||||
|
|||||||
@@ -28,7 +28,7 @@ public class CardToughnessFilter extends ValueRangeFilter<PaperCard> {
|
|||||||
protected Predicate<PaperCard> buildPredicate() {
|
protected Predicate<PaperCard> buildPredicate() {
|
||||||
Predicate<CardRules> predicate = getCardRulesFieldPredicate(CardRulesPredicates.LeafNumber.CardField.TOUGHNESS);
|
Predicate<CardRules> predicate = getCardRulesFieldPredicate(CardRulesPredicates.LeafNumber.CardField.TOUGHNESS);
|
||||||
if (predicate == null) {
|
if (predicate == null) {
|
||||||
return Predicates.alwaysTrue();
|
return x -> true;
|
||||||
}
|
}
|
||||||
predicate = Predicates.and(predicate, CardRulesPredicates.Presets.IS_CREATURE);
|
predicate = Predicates.and(predicate, CardRulesPredicates.Presets.IS_CREATURE);
|
||||||
return Predicates.compose(predicate, PaperCard::getRules);
|
return Predicates.compose(predicate, PaperCard::getRules);
|
||||||
|
|||||||
@@ -2,7 +2,6 @@ package forge.itemmanager.filters;
|
|||||||
|
|
||||||
import forge.deck.DeckProxy;
|
import forge.deck.DeckProxy;
|
||||||
import forge.itemmanager.ItemManager;
|
import forge.itemmanager.ItemManager;
|
||||||
import forge.util.Predicates;
|
|
||||||
|
|
||||||
import java.util.function.Predicate;
|
import java.util.function.Predicate;
|
||||||
|
|
||||||
@@ -22,7 +21,7 @@ public class DeckFormatFilter extends FormatFilter<DeckProxy> {
|
|||||||
@Override
|
@Override
|
||||||
protected final Predicate<DeckProxy> buildPredicate() {
|
protected final Predicate<DeckProxy> buildPredicate() {
|
||||||
if (format == null) {
|
if (format == null) {
|
||||||
return Predicates.alwaysTrue();
|
return x -> true;
|
||||||
}
|
}
|
||||||
return input -> format.isDeckLegal(input.getDeck());
|
return input -> format.isDeckLegal(input.getDeck());
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -10,7 +10,6 @@ import forge.itemmanager.ItemManager;
|
|||||||
import forge.itemmanager.SFilterUtil;
|
import forge.itemmanager.SFilterUtil;
|
||||||
import forge.toolbox.FDisplayObject;
|
import forge.toolbox.FDisplayObject;
|
||||||
import forge.toolbox.FTextField;
|
import forge.toolbox.FTextField;
|
||||||
import forge.util.Predicates;
|
|
||||||
|
|
||||||
import java.util.function.Predicate;
|
import java.util.function.Predicate;
|
||||||
|
|
||||||
@@ -63,7 +62,7 @@ public class TextSearchFilter<T extends InventoryItem> extends ItemFilter<T> {
|
|||||||
protected Predicate<T> buildPredicate() {
|
protected Predicate<T> buildPredicate() {
|
||||||
String text = txtSearch.getText();
|
String text = txtSearch.getText();
|
||||||
if (text.trim().isEmpty()) {
|
if (text.trim().isEmpty()) {
|
||||||
return Predicates.alwaysTrue();
|
return x -> true;
|
||||||
}
|
}
|
||||||
return SFilterUtil.buildItemTextFilter(text);
|
return SFilterUtil.buildItemTextFilter(text);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -278,7 +278,7 @@ public class CardThemedDeckBuilder extends DeckGeneratorBase {
|
|||||||
addLandKeyCards();
|
addLandKeyCards();
|
||||||
|
|
||||||
// 8. Add non-basic lands
|
// 8. Add non-basic lands
|
||||||
List<String> duals = getDualLandList(isForAI ? CardRulesPredicates.IS_KEPT_IN_AI_DECKS : Predicates.alwaysTrue());
|
List<String> duals = getDualLandList(isForAI ? CardRulesPredicates.IS_KEPT_IN_AI_DECKS : x -> true);
|
||||||
addNonBasicLands();
|
addNonBasicLands();
|
||||||
if (logToConsole) {
|
if (logToConsole) {
|
||||||
System.out.println("Post Nonbasic lands : " + deckList.size());
|
System.out.println("Post Nonbasic lands : " + deckList.size());
|
||||||
|
|||||||
@@ -106,7 +106,7 @@ public class ConquestRegion {
|
|||||||
String name = null;
|
String name = null;
|
||||||
String artCardName = null;
|
String artCardName = null;
|
||||||
ColorSet colorSet = ColorSet.ALL_COLORS;
|
ColorSet colorSet = ColorSet.ALL_COLORS;
|
||||||
Predicate<PaperCard> pred = Predicates.alwaysTrue();
|
Predicate<PaperCard> pred = x -> true;
|
||||||
|
|
||||||
String key, value;
|
String key, value;
|
||||||
String[] pieces = line.split("\\|");
|
String[] pieces = line.split("\\|");
|
||||||
|
|||||||
@@ -126,7 +126,7 @@ public final class BoosterUtils {
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
Predicate<PaperCard> filter = Predicates.alwaysTrue();
|
Predicate<PaperCard> filter = x -> true;
|
||||||
if (formatStartingPool != null) {
|
if (formatStartingPool != null) {
|
||||||
filter = formatStartingPool.getFilterPrinted();
|
filter = formatStartingPool.getFilterPrinted();
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1538,7 +1538,7 @@ public class AdvancedSearch {
|
|||||||
|
|
||||||
public Predicate<T> getPredicate() {
|
public Predicate<T> getPredicate() {
|
||||||
if (isEmpty()) {
|
if (isEmpty()) {
|
||||||
return Predicates.alwaysTrue();
|
return x -> true;
|
||||||
}
|
}
|
||||||
return getPredicatePiece(new ExpressionIterator());
|
return getPredicatePiece(new ExpressionIterator());
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -162,7 +162,7 @@ public class BooleanExpression {
|
|||||||
if (!predicates.isEmpty()) {
|
if (!predicates.isEmpty()) {
|
||||||
return Predicates.or(predicates);
|
return Predicates.or(predicates);
|
||||||
}
|
}
|
||||||
return Predicates.alwaysTrue();
|
return x -> true;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -41,7 +41,7 @@ public class SFilterUtil {
|
|||||||
text = text.trim();
|
text = text.trim();
|
||||||
|
|
||||||
if (text.isEmpty()) {
|
if (text.isEmpty()) {
|
||||||
return Predicates.alwaysTrue();
|
return x -> true;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (BooleanExpression.isExpression(text)) {
|
if (BooleanExpression.isExpression(text)) {
|
||||||
@@ -117,7 +117,7 @@ public class SFilterUtil {
|
|||||||
|
|
||||||
public static <T extends InventoryItem> Predicate<T> buildItemTextFilter(String text) {
|
public static <T extends InventoryItem> Predicate<T> buildItemTextFilter(String text) {
|
||||||
if (text.trim().isEmpty()) {
|
if (text.trim().isEmpty()) {
|
||||||
return Predicates.alwaysTrue();
|
return x -> true;
|
||||||
}
|
}
|
||||||
|
|
||||||
return new ItemTextPredicate<>(text);
|
return new ItemTextPredicate<>(text);
|
||||||
|
|||||||
Reference in New Issue
Block a user