boltbrowser/stringify.go
Gabriel Ochsenhofer e973a8c7ed stringify key/val
2018-02-01 13:51:25 -02:00

33 lines
567 B
Go

package main
import (
"encoding/binary"
"fmt"
"unicode/utf8"
)
// stringify ensures that we can print only valid characters.
// It's wrong to assume that everything is a string, since BoltDB is typeless.
func stringify(v []byte) string {
if utf8.Valid(v) {
ok := true
for _, r := range string(v) {
if r < 0x20 {
ok = false
break
} else if r >= 0x7f && r <= 0x9f {
ok = false
break
}
}
if ok {
return string(v)
}
}
if len(v) == 8 {
return fmt.Sprintf("%v", binary.BigEndian.Uint64(v))
}
return fmt.Sprintf("%x", v)
}