You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
hugobot/encoder/encoder.go

59 lines
747 B
Go

package encoder
import (
"encoding/json"
"fmt"
"io"
"github.com/BurntSushi/toml"
)
const (
JSON = iota
TOML
)
type Encoder interface {
Encode(v interface{}) error
}
type ExportEncoder struct {
encoder Encoder
w io.Writer
eType int
}
func (ee *ExportEncoder) Encode(v interface{}) error {
var err error
if ee.eType == TOML {
fmt.Fprintf(ee.w, "+++\n")
}
err = ee.encoder.Encode(v)
if ee.eType == TOML {
fmt.Fprintf(ee.w, "+++\n")
}
return err
}
func NewExportEncoder(w io.Writer, encType int) *ExportEncoder {
var enc Encoder
switch encType {
case JSON:
enc = json.NewEncoder(w)
case TOML:
enc = toml.NewEncoder(w)
}
return &ExportEncoder{
encoder: enc,
w: w,
eType: encType,
}
}