Files

55 lines
1.5 KiB
Go

package components
import (
"strings"
"time"
)
// RenderClock — jam digital blok, 5 baris, format HH:MM:SS.
// Teks polos (tanpa ANSI); pemanggil yang mewarnai.
func RenderClock(t time.Time) []string {
s := t.Format("15:04:05")
rows := make([]string, 5)
for _, r := range s {
glyph, ok := blockDigits[r]
if !ok {
glyph = blockDigits[' ']
}
for i := range rows {
if rows[i] != "" {
rows[i] += " "
}
rows[i] += glyph[i]
}
}
return rows
}
var blockDigits = map[rune][]string{
'0': {"███", "█ █", "█ █", "█ █", "███"},
'1': {" █ ", " █ ", " █ ", " █ ", " █ "},
'2': {"███", " █", "███", "█ ", "███"},
'3': {"███", " █", "███", " █", "███"},
'4': {"█ █", "█ █", "███", " █", " █"},
'5': {"███", "█ ", "███", " █", "███"},
'6': {"███", "█ ", "███", "█ █", "███"},
'7': {"███", " █", " █", " █", " █"},
'8': {"███", "█ █", "███", "█ █", "███"},
'9': {"███", "█ █", "███", " █", "███"},
':': {" ", "█", " ", "█", " "},
' ': {" ", " ", " ", " ", " "},
}
// CenterBlock — pusatkan tiap baris blok dalam lebar w (helper tampilan).
func CenterBlock(rows []string, w int) []string {
out := make([]string, len(rows))
for i, r := range rows {
pad := (w - len([]rune(r))) / 2
if pad < 0 {
pad = 0
}
out[i] = strings.Repeat(" ", pad) + r
}
return out
}