Implement encoding.TextMarshaler to match unmarshaler for metainfo.Hash
Fixes https://github.com/anacrolix/torrent/issues/463
This commit is contained in:
parent
6aaaaaffba
commit
03b1abafb9
|
@ -12,10 +12,7 @@ const HashSize = 20
|
|||
// 20-byte SHA1 hash used for info and pieces.
|
||||
type Hash [HashSize]byte
|
||||
|
||||
var (
|
||||
_ fmt.Formatter = (*Hash)(nil)
|
||||
_ encoding.TextUnmarshaler = (*Hash)(nil)
|
||||
)
|
||||
var _ fmt.Formatter = (*Hash)(nil)
|
||||
|
||||
func (h Hash) Format(f fmt.State, c rune) {
|
||||
// TODO: I can't figure out a nice way to just override the 'x' rune, since it's meaningless
|
||||
|
@ -54,9 +51,17 @@ func (h *Hash) FromHexString(s string) (err error) {
|
|||
return
|
||||
}
|
||||
|
||||
var (
|
||||
_ encoding.TextUnmarshaler = (*Hash)(nil)
|
||||
_ encoding.TextMarshaler = Hash{}
|
||||
)
|
||||
|
||||
func (h *Hash) UnmarshalText(b []byte) error {
|
||||
return h.FromHexString(string(b))
|
||||
}
|
||||
func (h Hash) MarshalText() (text []byte, err error) {
|
||||
return []byte(h.HexString()), nil
|
||||
}
|
||||
|
||||
func NewHashFromHex(s string) (h Hash) {
|
||||
err := h.FromHexString(s)
|
||||
|
|
Loading…
Reference in New Issue