diff options
Diffstat (limited to 'formats/config/encoder.go')
-rw-r--r-- | formats/config/encoder.go | 75 |
1 files changed, 0 insertions, 75 deletions
diff --git a/formats/config/encoder.go b/formats/config/encoder.go deleted file mode 100644 index 88bdf65..0000000 --- a/formats/config/encoder.go +++ /dev/null @@ -1,75 +0,0 @@ -package config - -import ( - "fmt" - "io" -) - -// An Encoder writes config files to an output stream. -type Encoder struct { - w io.Writer -} - -// NewEncoder returns a new encoder that writes to w. -func NewEncoder(w io.Writer) *Encoder { - return &Encoder{w} -} - -// Encode writes the config in git config format to the stream of the encoder. -func (e *Encoder) Encode(cfg *Config) error { - for _, s := range cfg.Sections { - if err := e.encodeSection(s); err != nil { - return err - } - } - - return nil -} - -func (e *Encoder) encodeSection(s *Section) error { - if len(s.Options) > 0 { - if err := e.printf("[%s]\n", s.Name); err != nil { - return err - } - - if err := e.encodeOptions(s.Options); err != nil { - return err - } - } - - for _, ss := range s.Subsections { - if err := e.encodeSubsection(s.Name, ss); err != nil { - return err - } - } - - return nil -} - -func (e *Encoder) encodeSubsection(sectionName string, s *Subsection) error { - //TODO: escape - if err := e.printf("[%s \"%s\"]\n", sectionName, s.Name); err != nil { - return err - } - - if err := e.encodeOptions(s.Options); err != nil { - return err - } - - return nil -} - -func (e *Encoder) encodeOptions(opts Options) error { - for _, o := range opts { - if err := e.printf("\t%s = %s\n", o.Key, o.Value); err != nil { - return err - } - } - - return nil -} - -func (e *Encoder) printf(msg string, args ...interface{}) error { - _, err := fmt.Fprintf(e.w, msg, args...) - return err -} |