commit 8211508ade6f2991eb9ea1c72497b67555bd43b5
parent 7814525f048c47216909c9605e980fac4668c9a6
Author: Natasha Kerensikova <natgh@instinctive.eu>
Date: Tue, 1 Jul 2025 18:27:01 +0000
Filter list command
Diffstat:
1 file changed, 15 insertions(+), 0 deletions(-)
diff --git a/main.go b/main.go
@@ -244,6 +244,14 @@ func (natsim *NatsIM) doCommands() {
}
switch cmd.name {
+ case "filters":
+ var buf strings.Builder
+ buf.WriteString(fmt.Sprintf("Active filters: %d NATS, %d log, %d IRC", len(natsim.Nats.Filter), len(natsim.Log.Filter), len(natsim.Irc.Filter)))
+ WriteFilter(&buf, "\n N", natsim.Nats.Filter)
+ WriteFilter(&buf, "\n L", natsim.Log.Filter)
+ WriteFilter(&buf, "\n I", natsim.Irc.Filter)
+ natsim.ircSend(buf.String())
+
case "subscribe":
if s, err := natsim.nc.Subscribe(cmd.arg, natsim.natsReceive); err != nil {
natsim.ircSendError("Subscribe", err)
@@ -693,6 +701,13 @@ func (element *FilterElement) UnmarshalText(text []byte) error {
return err
}
+func WriteFilter(buf *strings.Builder, prefix string, filter []FilterElement) {
+ for i, element := range filter {
+ line := fmt.Sprintf("%s%d. %s", prefix, i+1, element.String())
+ buf.WriteString(line)
+ }
+}
+
func IsKept(subject string, data []byte, elements []FilterElement, base bool) bool {
for _, element := range elements {
if element.Match(subject, data) {