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.
|
// 20-byte SHA1 hash used for info and pieces.
|
||||||
type Hash [HashSize]byte
|
type Hash [HashSize]byte
|
||||||
|
|
||||||
var (
|
var _ fmt.Formatter = (*Hash)(nil)
|
||||||
_ fmt.Formatter = (*Hash)(nil)
|
|
||||||
_ encoding.TextUnmarshaler = (*Hash)(nil)
|
|
||||||
)
|
|
||||||
|
|
||||||
func (h Hash) Format(f fmt.State, c rune) {
|
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
|
// 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
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
|
var (
|
||||||
|
_ encoding.TextUnmarshaler = (*Hash)(nil)
|
||||||
|
_ encoding.TextMarshaler = Hash{}
|
||||||
|
)
|
||||||
|
|
||||||
func (h *Hash) UnmarshalText(b []byte) error {
|
func (h *Hash) UnmarshalText(b []byte) error {
|
||||||
return h.FromHexString(string(b))
|
return h.FromHexString(string(b))
|
||||||
}
|
}
|
||||||
|
func (h Hash) MarshalText() (text []byte, err error) {
|
||||||
|
return []byte(h.HexString()), nil
|
||||||
|
}
|
||||||
|
|
||||||
func NewHashFromHex(s string) (h Hash) {
|
func NewHashFromHex(s string) (h Hash) {
|
||||||
err := h.FromHexString(s)
|
err := h.FromHexString(s)
|
||||||
|
|
Loading…
Reference in New Issue