import (
"fmt"
- "regexp"
"strings"
"time"
)
return fmt.Sprintf("%s: %s", t.ColorName(m.from), m.body)
}
-func (m *PublicMsg) RenderHighlighted(t *Theme, highlight *regexp.Regexp) string {
- if highlight == nil || t == nil {
- return m.Render(t)
+func (m *PublicMsg) RenderFor(cfg UserConfig) string {
+ if cfg.Highlight == nil || cfg.Theme == nil {
+ return m.Render(cfg.Theme)
}
- body := highlight.ReplaceAllString(m.body, t.Highlight("${1}"))
- return fmt.Sprintf("%s: %s", t.ColorName(m.from), body)
+ if !cfg.Highlight.MatchString(m.body) {
+ return m.Render(cfg.Theme)
+ }
+
+ body := cfg.Highlight.ReplaceAllString(m.body, cfg.Theme.Highlight("${1}"))
+ if cfg.Bell {
+ body += Bel
+ }
+ return fmt.Sprintf("%s: %s", cfg.Theme.ColorName(m.from), body)
}
func (m *PublicMsg) String() string {
func (u User) render(m Message) string {
switch m := m.(type) {
case *PublicMsg:
- return m.RenderHighlighted(u.Config.Theme, u.Config.Highlight) + Newline
+ return m.RenderFor(u.Config) + Newline
default:
return m.Render(u.Config.Theme) + Newline
}