stringify key/val
This commit is contained in:
@@ -0,0 +1,32 @@
|
||||
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)
|
||||
}
|
||||
Reference in New Issue
Block a user