Check if the terminal supports UTF-8 before outputting unicode symbols

pull/6/head
Mickaël Menu 3 years ago
parent fbbf8e53dc
commit 5a00a56984
No known key found for this signature in database
GPG Key ID: 53D73664CD359895

@ -12,10 +12,10 @@ import (
"github.com/mickael-menu/zk/util/errors"
)
func Init(lang string, logger util.Logger, styler style.Styler) {
func Init(lang string, supportsUTF8 bool, logger util.Logger, styler style.Styler) {
helpers.RegisterConcat()
helpers.RegisterDate(logger)
helpers.RegisterList()
helpers.RegisterList(supportsUTF8)
helpers.RegisterPrepend(logger)
helpers.RegisterShell(logger)
helpers.RegisterSlug(lang, logger)

@ -8,10 +8,15 @@ import (
// RegisterList registers a {{list}} template helper which formats a slice of
// strings into a bulleted list.
func RegisterList() {
func RegisterList(supportsUTF8 bool) {
itemify := func(text string) string {
bullet := "-"
if supportsUTF8 {
bullet = "‣"
}
lines := strings.SplitAfter(strings.TrimRight(text, "\n"), "\n")
return " ‣ " + strings.Join(lines, " ")
return " " + bullet + " " + strings.Join(lines, " ")
}
raymond.RegisterHelper("list", func(items []string) string {

@ -2,6 +2,7 @@ package term
import (
"os"
"strings"
"github.com/mattn/go-isatty"
)
@ -25,3 +26,10 @@ func (t *Terminal) IsInteractive() bool {
func (t *Terminal) IsTTY() bool {
return isatty.IsTerminal(os.Stdin.Fd())
}
// SupportsUTF8 returns whether the computer is configured to support UTF-8.
func (t *Terminal) SupportsUTF8() bool {
lang := strings.ToUpper(os.Getenv("LANG"))
lc := strings.ToUpper(os.Getenv("LC_ALL"))
return strings.Contains(lang, "UTF") || strings.Contains(lc, "UTF")
}

@ -51,7 +51,7 @@ func (c *Container) OpenZk() (*zk.Zk, error) {
func (c *Container) TemplateLoader(lang string) *handlebars.Loader {
if c.templateLoader == nil {
handlebars.Init(lang, c.Logger, c.Terminal)
handlebars.Init(lang, c.Terminal.SupportsUTF8(), c.Logger, c.Terminal)
c.templateLoader = handlebars.NewLoader()
}
return c.templateLoader

Loading…
Cancel
Save