Add `yamlConfigEncoder` and `yamlConfigDecoder`

This commit is contained in:
Jingwen Owen Ou 2014-09-14 18:36:01 -07:00
Родитель 72d8220279
Коммит ae77e64ff8
3 изменённых файлов: 34 добавлений и 2 удалений

Просмотреть файл

@ -2,8 +2,10 @@ package github
import (
"io"
"io/ioutil"
"github.com/BurntSushi/toml"
"gopkg.in/yaml.v1"
)
type configDecoder interface {
@ -17,3 +19,15 @@ func (t *tomlConfigDecoder) Decode(r io.Reader, v interface{}) error {
_, err := toml.DecodeReader(r, v)
return err
}
type yamlConfigDecoder struct {
}
func (y *yamlConfigDecoder) Decode(r io.Reader, v interface{}) error {
d, err := ioutil.ReadAll(r)
if err != nil {
return err
}
return yaml.Unmarshal(d, v)
}

Просмотреть файл

@ -4,6 +4,7 @@ import (
"io"
"github.com/BurntSushi/toml"
"gopkg.in/yaml.v1"
)
type configEncoder interface {
@ -17,3 +18,20 @@ func (t *tomlConfigEncoder) Encode(w io.Writer, v interface{}) error {
enc := toml.NewEncoder(w)
return enc.Encode(v)
}
type yamlConfigEncoder struct {
}
func (y *yamlConfigEncoder) Encode(w io.Writer, v interface{}) error {
d, err := yaml.Marshal(v)
if err != nil {
return err
}
n, err := w.Write(d)
if err == nil && n < len(d) {
err = io.ErrShortWrite
}
return err
}

Просмотреть файл

@ -7,8 +7,8 @@ import (
func newConfigService() *configService {
return &configService{
Encoder: &tomlConfigEncoder{},
Decoder: &tomlConfigDecoder{},
Encoder: &yamlConfigEncoder{},
Decoder: &yamlConfigDecoder{},
}
}