From 0ddecc02d322db891463615a5ce28136becfa875 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?An=C4=B1lcan?= Date: Mon, 22 Jun 2020 21:44:49 +0300 Subject: [PATCH] feat(tsl): add CONTAINS comparator --- .../tracer/chat/TwitchChatTracer.java | 2 +- .../tslanguage/EventArguments.java | 4 ++++ .../keyword/TSLComparatorSymbol.java | 2 ++ .../keyword/TSLPredicateProperty.java | 4 ++++ .../predicate/ContainsComparator.java | 22 +++++++++++++++++++ 5 files changed, 33 insertions(+), 1 deletion(-) create mode 100644 src/main/java/net/programmer/igoodie/twitchspawn/tslanguage/predicate/ContainsComparator.java diff --git a/src/main/java/net/programmer/igoodie/twitchspawn/tracer/chat/TwitchChatTracer.java b/src/main/java/net/programmer/igoodie/twitchspawn/tracer/chat/TwitchChatTracer.java index c89a8e5..798e3f4 100644 --- a/src/main/java/net/programmer/igoodie/twitchspawn/tracer/chat/TwitchChatTracer.java +++ b/src/main/java/net/programmer/igoodie/twitchspawn/tracer/chat/TwitchChatTracer.java @@ -103,7 +103,7 @@ protected void onChatMessage(CredentialsConfig.Streamer streamer, TwitchChatMess eventArguments.actorNickname = twitchChatMessage.username; eventArguments.message = twitchChatMessage.message; eventArguments.subscriptionMonths = twitchChatMessage.subscriptionMonths; - // TODO: Add badges too + eventArguments.chatBadges = twitchChatMessage.badges; ConfigManager.RULESET_COLLECTION.handleEvent(eventArguments, cooldownBucket); diff --git a/src/main/java/net/programmer/igoodie/twitchspawn/tslanguage/EventArguments.java b/src/main/java/net/programmer/igoodie/twitchspawn/tslanguage/EventArguments.java index 3403980..79d545e 100644 --- a/src/main/java/net/programmer/igoodie/twitchspawn/tslanguage/EventArguments.java +++ b/src/main/java/net/programmer/igoodie/twitchspawn/tslanguage/EventArguments.java @@ -5,7 +5,9 @@ import net.programmer.igoodie.twitchspawn.tslanguage.keyword.TSLEventKeyword; import java.lang.reflect.Field; +import java.util.HashSet; import java.util.Random; +import java.util.Set; public class EventArguments { @@ -39,11 +41,13 @@ public static EventArguments createRandom(String streamerNickname) { public int raiderCount; public String rewardTitle; + public Set chatBadges; public EventArguments(String eventType, String eventAccount) { this.eventType = eventType; this.eventAccount = eventAccount; this.eventName = TSLEventKeyword.ofPair(eventType, eventAccount); + this.chatBadges = new HashSet<>(); } public EventArguments(TSLEventPair eventPair) { diff --git a/src/main/java/net/programmer/igoodie/twitchspawn/tslanguage/keyword/TSLComparatorSymbol.java b/src/main/java/net/programmer/igoodie/twitchspawn/tslanguage/keyword/TSLComparatorSymbol.java index bc9cf45..cb1b3eb 100644 --- a/src/main/java/net/programmer/igoodie/twitchspawn/tslanguage/keyword/TSLComparatorSymbol.java +++ b/src/main/java/net/programmer/igoodie/twitchspawn/tslanguage/keyword/TSLComparatorSymbol.java @@ -6,6 +6,8 @@ public enum TSLComparatorSymbol { IN_RANGE( "IN RANGE", InRangeComparator.class), + CONTAINS( + "CONTAINS", ContainsComparator.class), IS( "IS", IsComparator.class), PREFIX( diff --git a/src/main/java/net/programmer/igoodie/twitchspawn/tslanguage/keyword/TSLPredicateProperty.java b/src/main/java/net/programmer/igoodie/twitchspawn/tslanguage/keyword/TSLPredicateProperty.java index 81decb9..2a5cf24 100644 --- a/src/main/java/net/programmer/igoodie/twitchspawn/tslanguage/keyword/TSLPredicateProperty.java +++ b/src/main/java/net/programmer/igoodie/twitchspawn/tslanguage/keyword/TSLPredicateProperty.java @@ -48,6 +48,10 @@ public enum TSLPredicateProperty { REWARD_TITLE( "rewardTitle", "title", "reward_title" + ), + CHAT_BADGES( + "chatBadges", + "badges", "chat_badges" ); public static boolean exists(String tslField) { diff --git a/src/main/java/net/programmer/igoodie/twitchspawn/tslanguage/predicate/ContainsComparator.java b/src/main/java/net/programmer/igoodie/twitchspawn/tslanguage/predicate/ContainsComparator.java new file mode 100644 index 0000000..68d4d6d --- /dev/null +++ b/src/main/java/net/programmer/igoodie/twitchspawn/tslanguage/predicate/ContainsComparator.java @@ -0,0 +1,22 @@ +package net.programmer.igoodie.twitchspawn.tslanguage.predicate; + +import java.util.Set; + +public class ContainsComparator extends TSLComparator { + + protected String value; + + public ContainsComparator(String rightHandRaw) { + this.value = rightHandRaw.trim(); + } + + @Override + public boolean compare(Object leftHand) { + System.out.println(leftHand.toString() + " contains? " + value.toLowerCase()); + if (leftHand instanceof Set) + return ((Set) leftHand).contains(value.toLowerCase()); + + return false; + } + +}