github.com/annwntech/go-micro/v2@v2.9.5/config/reader/options.go (about) 1 package reader 2 3 import ( 4 "github.com/annwntech/go-micro/v2/config/encoder" 5 "github.com/annwntech/go-micro/v2/config/encoder/hcl" 6 "github.com/annwntech/go-micro/v2/config/encoder/json" 7 "github.com/annwntech/go-micro/v2/config/encoder/toml" 8 "github.com/annwntech/go-micro/v2/config/encoder/xml" 9 "github.com/annwntech/go-micro/v2/config/encoder/yaml" 10 ) 11 12 type Options struct { 13 Encoding map[string]encoder.Encoder 14 } 15 16 type Option func(o *Options) 17 18 func NewOptions(opts ...Option) Options { 19 options := Options{ 20 Encoding: map[string]encoder.Encoder{ 21 "json": json.NewEncoder(), 22 "yaml": yaml.NewEncoder(), 23 "toml": toml.NewEncoder(), 24 "xml": xml.NewEncoder(), 25 "hcl": hcl.NewEncoder(), 26 "yml": yaml.NewEncoder(), 27 }, 28 } 29 for _, o := range opts { 30 o(&options) 31 } 32 return options 33 } 34 35 func WithEncoder(e encoder.Encoder) Option { 36 return func(o *Options) { 37 if o.Encoding == nil { 38 o.Encoding = make(map[string]encoder.Encoder) 39 } 40 o.Encoding[e.String()] = e 41 } 42 }