add yaml encoder (#924)
parent
2de0fa330c
commit
e989bb04e3
@ -0,0 +1,10 @@ |
|||||||
|
package file |
||||||
|
|
||||||
|
import "strings" |
||||||
|
|
||||||
|
func format(name string) string { |
||||||
|
if p := strings.Split(name, "."); len(p) > 1 { |
||||||
|
return p[len(p)-1] |
||||||
|
} |
||||||
|
return "" |
||||||
|
} |
@ -0,0 +1,37 @@ |
|||||||
|
package yaml |
||||||
|
|
||||||
|
import ( |
||||||
|
"reflect" |
||||||
|
|
||||||
|
"github.com/go-kratos/kratos/v2/encoding" |
||||||
|
"gopkg.in/yaml.v2" |
||||||
|
) |
||||||
|
|
||||||
|
// Name is the name registered for the json codec.
|
||||||
|
const Name = "yaml" |
||||||
|
|
||||||
|
func init() { |
||||||
|
encoding.RegisterCodec(codec{}) |
||||||
|
} |
||||||
|
|
||||||
|
// codec is a Codec implementation with json.
|
||||||
|
type codec struct{} |
||||||
|
|
||||||
|
func (codec) Marshal(v interface{}) ([]byte, error) { |
||||||
|
return yaml.Marshal(v) |
||||||
|
} |
||||||
|
|
||||||
|
func (codec) Unmarshal(data []byte, v interface{}) error { |
||||||
|
rv := reflect.ValueOf(v) |
||||||
|
for rv.Kind() == reflect.Ptr { |
||||||
|
if rv.IsNil() { |
||||||
|
rv.Set(reflect.New(rv.Type().Elem())) |
||||||
|
} |
||||||
|
rv = rv.Elem() |
||||||
|
} |
||||||
|
return yaml.Unmarshal(data, v) |
||||||
|
} |
||||||
|
|
||||||
|
func (codec) Name() string { |
||||||
|
return Name |
||||||
|
} |
Loading…
Reference in new issue