refact
This commit is contained in:
102
lib/sys.header.go
Normal file
102
lib/sys.header.go
Normal file
@@ -0,0 +1,102 @@
|
||||
package lib
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"strings"
|
||||
"sync"
|
||||
)
|
||||
|
||||
const Banner = `
|
||||
████████╗███████╗██╗ ███████╗████████╗██╗ ██╗██████╗ ███████╗
|
||||
██╔══╝██╔════╝██║ ██╔════╝╚══██╔══╝╚██╗ ██╔╝██╔══██╗██╔════╝
|
||||
██║ █████╗ ██║ █████╗ ██║ ╚████╔╝ ██████╔╝█████╗
|
||||
██║ ██╔══╝ ██║ ██╔══╝ ██║ ╚██╔╝ ██╔═══╝ ██╔══╝
|
||||
██║ ███████╗███████╗███████╗ ██║ ██║ ██║ ███████╗
|
||||
╚═╝ ╚══════╝╚══════╝╚══════╝ ╚═╝ ╚═╝ ╚═╝ ╚══════╝
|
||||
|
||||
██████╗ █████╗ ███╗ ███╗███████╗███████╗
|
||||
██╔════╝ ██╔══██╗████╗ ████║██╔════╝██╔════╝
|
||||
██║ ███╗███████║██╔████╔██║█████╗ ███████╗
|
||||
██║ ██║██╔══██║██║╚██╔╝██║██╔══╝ ╚════██║
|
||||
╚██████╔╝██║ ██║██║ ╚═╝ ██║███████╗███████║
|
||||
╚═════╝ ╚═╝ ╚═╝╚═╝ ╚═╝╚══════╝╚══════╝
|
||||
|
||||
░░ BBS v2.0 ░░ teletype.hu ░░
|
||||
Welcome to the Teletype community bulletin board!
|
||||
`
|
||||
|
||||
type BBS struct {
|
||||
Messages []Message
|
||||
OnlineUsers map[string]string // addr -> username
|
||||
Mu sync.Mutex
|
||||
WikiToken string
|
||||
WikiRepo *WikiRepository
|
||||
CatalogRepo *CatalogRepository
|
||||
}
|
||||
|
||||
func NewBBS(wikiToken string) *BBS {
|
||||
return &BBS{
|
||||
Messages: []Message{},
|
||||
OnlineUsers: make(map[string]string),
|
||||
WikiToken: wikiToken,
|
||||
WikiRepo: NewWikiRepository(wikiToken),
|
||||
CatalogRepo: NewCatalogRepository(),
|
||||
}
|
||||
}
|
||||
|
||||
type UI struct {
|
||||
Printer *Printer
|
||||
Lang T
|
||||
}
|
||||
|
||||
func NewUI(printer *Printer, lang T) *UI {
|
||||
return &UI{Printer: printer, Lang: lang}
|
||||
}
|
||||
|
||||
type Session struct {
|
||||
BBS *BBS
|
||||
Printer *Printer
|
||||
Username string
|
||||
Addr string
|
||||
Lang T
|
||||
}
|
||||
|
||||
func NewSession(bbs *BBS, printer *Printer, username string, addr string, lang T) *Session {
|
||||
return &Session{
|
||||
BBS: bbs,
|
||||
Printer: printer,
|
||||
Username: username,
|
||||
Addr: addr,
|
||||
Lang: lang,
|
||||
}
|
||||
}
|
||||
|
||||
func (ui *UI) MainMenu(username string) string {
|
||||
headerLine := strings.Repeat("═", W)
|
||||
|
||||
l1 := ui.Printer.PadLine(fmt.Sprintf(" %s%s%s %s@%s%s", YL, ui.Lang["MainMenuTitle"], R, GY, username, R), W)
|
||||
l2 := ui.Printer.PadLine(fmt.Sprintf(" %s[1]%s %s", GR, R, ui.Lang["MenuUzenopal"]), W/2) + ui.Printer.PadLine(fmt.Sprintf(" %s[2]%s %s", BL, R, ui.Lang["MenuBlog"]), W/2)
|
||||
l3 := ui.Printer.PadLine(fmt.Sprintf(" %s[3]%s %s", MG, R, ui.Lang["MenuHowto"]), W/2) + ui.Printer.PadLine(fmt.Sprintf(" %s[4]%s %s", YL, R, ui.Lang["MenuCatalog"]), W/2)
|
||||
l4 := ui.Printer.PadLine(fmt.Sprintf(" %s[5]%s %s", CY, R, ui.Lang["MenuOnline"]), W/2) + ui.Printer.PadLine(fmt.Sprintf(" %s[6]%s %s", GY, R, ui.Lang["MenuSysinfo"]), W/2)
|
||||
l5 := ui.Printer.PadLine(fmt.Sprintf(" %s[Q]%s %s", RD, R, ui.Lang["MenuExit"]), W)
|
||||
|
||||
return fmt.Sprintf(
|
||||
"\n%s╔%s╗%s\n"+
|
||||
"%s║%s%s║%s\n"+
|
||||
"%s╠%s╣%s\n"+
|
||||
"%s║%s%s║%s\n"+
|
||||
"%s║%s%s║%s\n"+
|
||||
"%s║%s%s║%s\n"+
|
||||
"%s║%s%s║%s\n"+
|
||||
"%s╚%s╝%s\n%s",
|
||||
WH, headerLine, R,
|
||||
WH, l1, WH, R,
|
||||
WH, headerLine, R,
|
||||
WH, l2, WH, R,
|
||||
WH, l3, WH, R,
|
||||
WH, l4, WH, R,
|
||||
WH, l5, WH, R,
|
||||
WH, headerLine, R,
|
||||
ui.Lang["Choice"],
|
||||
)
|
||||
}
|
||||
Reference in New Issue
Block a user