38 lines
679 B
Go
38 lines
679 B
Go
package main
|
|
|
|
import (
|
|
"errors"
|
|
"unicode/utf8"
|
|
)
|
|
|
|
// Datatype_String is basically the default type for
|
|
// boltbrowser (and the boltease library)
|
|
type Datatype_String struct{}
|
|
|
|
func (t *Datatype_String) Name() string {
|
|
return "string"
|
|
}
|
|
|
|
func (t *Datatype_String) ToString(data []byte) (string, error) {
|
|
if utf8.Valid(data) {
|
|
ok := true
|
|
for _, r := range string(data) {
|
|
if r < 0x20 {
|
|
ok = false
|
|
break
|
|
} else if r >= 0x7f && r <= 0x9f {
|
|
ok = false
|
|
break
|
|
}
|
|
}
|
|
if ok {
|
|
return string(data), nil
|
|
}
|
|
}
|
|
return "", errors.New("Invalid String Data")
|
|
}
|
|
|
|
func (t *Datatype_String) FromString(val string) ([]byte, error) {
|
|
return []byte(val), nil
|
|
}
|