github.com/mavryk-network/mvgo@v1.19.9/internal/compose/type.go (about) 1 // Copyright (c) 2023 Blockwatch Data Inc. 2 // Author: alex@blockwatch.cc, abdul@blockwatch.cc 3 4 package compose 5 6 import ( 7 "fmt" 8 "time" 9 10 "github.com/mavryk-network/mvgo/mavryk" 11 "github.com/mavryk-network/mvgo/micheline" 12 ) 13 14 func ParseValue(typ micheline.OpCode, value string) (any, error) { 15 switch typ { 16 case micheline.T_STRING: 17 return value, nil 18 case micheline.T_ADDRESS: 19 return mavryk.ParseAddress(value) 20 case micheline.T_NAT, micheline.T_MUMAV, micheline.T_INT: 21 return mavryk.ParseZ(value) 22 case micheline.T_TIMESTAMP: 23 return time.Parse(time.RFC3339, value) 24 case micheline.T_BYTES: 25 var h mavryk.HexBytes 26 if err := h.UnmarshalText([]byte(value)); err != nil { 27 return nil, err 28 } 29 return h.Bytes(), nil 30 case micheline.T_KEY: 31 return mavryk.DecodeKey([]byte(value)) 32 case micheline.T_SIGNATURE: 33 return mavryk.ParseSignature(value) 34 case micheline.T_CHAIN_ID: 35 return mavryk.ParseChainIdHash(value) 36 default: 37 return nil, fmt.Errorf("cannot parsed typ %q is ", typ) 38 } 39 }