up3
Build and deploy / Build (push) Has been cancelled
Build and deploy / Update Contributors (push) Has been cancelled
Build and deploy / Deploy (push) Has been cancelled
Build and deploy / Build (push) Has been cancelled
Build and deploy / Update Contributors (push) Has been cancelled
Build and deploy / Deploy (push) Has been cancelled
This commit is contained in:
@@ -0,0 +1,51 @@
|
||||
package chat
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"github.com/google/uuid"
|
||||
"github.com/sandertv/gophertunnel/minecraft/text"
|
||||
"strings"
|
||||
)
|
||||
|
||||
// Subscriber represents an entity that may subscribe to a Chat. In order to do
|
||||
// so, the Subscriber must implement methods to send messages to it.
|
||||
type Subscriber interface {
|
||||
// UUID returns a unique ID for the Subscriber.
|
||||
UUID() uuid.UUID
|
||||
// Message sends a formatted message to the subscriber. The message is
|
||||
// formatted as it would when using fmt.Println.
|
||||
Message(a ...any)
|
||||
}
|
||||
|
||||
// Translator is a Subscriber that is able to translate messages to their own
|
||||
// locale.
|
||||
type Translator interface {
|
||||
// Messaget sends a Translation message to the Translator, using the
|
||||
// arguments passed to fill out any translation parameters.
|
||||
Messaget(t Translation, a ...any)
|
||||
}
|
||||
|
||||
// StdoutSubscriber is an implementation of Subscriber that forwards messages
|
||||
// sent to the chat to the stdout.
|
||||
type StdoutSubscriber struct{}
|
||||
|
||||
var id = uuid.New()
|
||||
|
||||
// UUID ...
|
||||
func (c StdoutSubscriber) UUID() uuid.UUID {
|
||||
return id
|
||||
}
|
||||
|
||||
// Message ...
|
||||
func (c StdoutSubscriber) Message(a ...any) {
|
||||
s := make([]string, len(a))
|
||||
for i, b := range a {
|
||||
s[i] = fmt.Sprint(b)
|
||||
}
|
||||
t := text.ANSI(strings.Join(s, " "))
|
||||
if !strings.HasSuffix(t, "\n") {
|
||||
fmt.Println(t)
|
||||
return
|
||||
}
|
||||
fmt.Print(t)
|
||||
}
|
||||
Reference in New Issue
Block a user