mirror of
https://github.com/shazow/ssh-chat.git
synced 2025-04-14 16:17:17 +03:00
refactor: sshchat.getPrompt() -> message.User.Prompt()
This commit is contained in:
parent
b45efc0dae
commit
f64b2a3607
@ -186,6 +186,16 @@ func (u *User) Send(m Message) error {
|
||||
return nil
|
||||
}
|
||||
|
||||
// Prompt renders a theme-colorized prompt string.
|
||||
func (u *User) Prompt() string {
|
||||
name := u.Name()
|
||||
cfg := u.Config()
|
||||
if cfg.Theme != nil {
|
||||
name = cfg.Theme.ColorName(u)
|
||||
}
|
||||
return fmt.Sprintf("[%s] ", name)
|
||||
}
|
||||
|
||||
// Container for per-user configurations.
|
||||
type UserConfig struct {
|
||||
Highlight *regexp.Regexp
|
||||
|
14
host.go
14
host.go
@ -18,16 +18,6 @@ import (
|
||||
|
||||
const maxInputLength int = 1024
|
||||
|
||||
// getPrompt will render the terminal prompt string based on the user.
|
||||
func getPrompt(user *message.User) string {
|
||||
name := user.Name()
|
||||
cfg := user.Config()
|
||||
if cfg.Theme != nil {
|
||||
name = cfg.Theme.ColorName(user)
|
||||
}
|
||||
return fmt.Sprintf("[%s] ", name)
|
||||
}
|
||||
|
||||
// Host is the bridge between sshd and chat modules
|
||||
// TODO: Should be easy to add support for multiple rooms, if we want.
|
||||
type Host struct {
|
||||
@ -124,7 +114,7 @@ func (h *Host) Connect(term *sshd.Terminal) {
|
||||
}
|
||||
|
||||
// Successfully joined.
|
||||
term.SetPrompt(getPrompt(user))
|
||||
term.SetPrompt(user.Prompt())
|
||||
term.AutoCompleteCallback = h.AutoCompleteFunction(user)
|
||||
user.SetHighlight(user.Name())
|
||||
|
||||
@ -172,7 +162,7 @@ func (h *Host) Connect(term *sshd.Terminal) {
|
||||
//
|
||||
// FIXME: This is hacky, how do we improve the API to allow for
|
||||
// this? Chat module shouldn't know about terminals.
|
||||
term.SetPrompt(getPrompt(user))
|
||||
term.SetPrompt(user.Prompt())
|
||||
user.SetHighlight(user.Name())
|
||||
}
|
||||
}
|
||||
|
@ -29,7 +29,7 @@ func TestHostGetPrompt(t *testing.T) {
|
||||
|
||||
u := message.NewUser(&identity{id: "foo"})
|
||||
|
||||
actual = getPrompt(u)
|
||||
actual = u.Prompt()
|
||||
expected = "[foo] "
|
||||
if actual != expected {
|
||||
t.Errorf("Got: %q; Expected: %q", actual, expected)
|
||||
@ -38,7 +38,7 @@ func TestHostGetPrompt(t *testing.T) {
|
||||
u.SetConfig(message.UserConfig{
|
||||
Theme: &message.Themes[0],
|
||||
})
|
||||
actual = getPrompt(u)
|
||||
actual = u.Prompt()
|
||||
expected = "[\033[38;05;88mfoo\033[0m] "
|
||||
if actual != expected {
|
||||
t.Errorf("Got: %q; Expected: %q", actual, expected)
|
||||
|
Loading…
x
Reference in New Issue
Block a user