woordklok/woordklok.go
2022-10-20 20:42:30 +02:00

78 lines
1.4 KiB
Go

package main
import (
"fmt"
"strings"
"time"
)
// Replace occurences of repl with their uppercase in str
func repl_upper(str string, repl []string) string {
ret := str
for _, r := range repl {
ret = strings.ReplaceAll(ret, r, strings.ToUpper(r))
}
return ret
}
func woordklok(tsp time.Time) string {
// minutes part
klok1 := "HETknISadvzvijftiengkwartbovervoormhalf"
// hours
klok2 := "yachtweezesdrielftienxzevenegenviertwaalfeenvijfuur"
mm := tsp.Minute()
hh := tsp.Hour() % 12
// get the matching text
m := "uur"
if mm >= 55 {
m = "vijf voor"
} else if mm >= 50 {
m = "tien voor"
} else if mm >= 45 {
m = "kwart voor"
} else if mm >= 40 {
m = "tien over half"
} else if mm >= 35 {
m = "vijf over half"
} else if mm >= 30 {
m = "half"
} else if mm >= 25 {
m = "vijf voor half"
} else if mm >= 20 {
m = "tien voor half"
hh++
} else if mm >= 15 {
m = "kwart over"
} else if mm >= 10 {
m = "tien over"
} else if mm >= 5 {
m = "vijf over"
}
hours := []string{
"twaalf",
"een",
"twee",
"drie",
"vier",
"vijf",
"zes",
"zeven",
"acht",
"negen",
"tien",
"elf",
}
hour := hours[hh]
// and replace the matching text with the uppercase
return fmt.Sprintf("%s%s", repl_upper(klok1, strings.Split(m, " ")), repl_upper(klok2, strings.Split(hour, " ")))
}
func main() {
woord := woordklok(time.Now())
fmt.Println(woord)
}