clean tdd
This commit is contained in:
@@ -1,6 +1,12 @@
|
||||
package ledger
|
||||
|
||||
import "io"
|
||||
import (
|
||||
"fmt"
|
||||
"io"
|
||||
"os"
|
||||
)
|
||||
|
||||
var filesAppendDelim = "\t"
|
||||
|
||||
type Files []string
|
||||
|
||||
@@ -11,7 +17,42 @@ func NewFiles(p string, q ...string) (Files, error) {
|
||||
}
|
||||
|
||||
func (files Files) Add(payee string, delta Delta) error {
|
||||
// TODO
|
||||
currencyValue := fmt.Sprintf("%s%.2f", delta.Currency, delta.Value)
|
||||
if delta.Currency != USD {
|
||||
currencyValue = fmt.Sprintf("%.2f %s", delta.Value, delta.Currency)
|
||||
}
|
||||
return files.append(fmt.Sprintf("%s %s\n%s%s%s%s\n%s%s",
|
||||
delta.Date, delta.Description,
|
||||
filesAppendDelim, delta.Name, filesAppendDelim+filesAppendDelim+filesAppendDelim, currencyValue,
|
||||
filesAppendDelim, payee,
|
||||
))
|
||||
}
|
||||
|
||||
func (files Files) append(s string) error {
|
||||
if err := files.trimTrainlingWhitespace(); err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
f, err := os.OpenFile(string(files[0]), os.O_APPEND|os.O_CREATE|os.O_WRONLY, os.ModePerm)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
defer f.Close()
|
||||
|
||||
fmt.Fprintf(f, "\n%s", s)
|
||||
return f.Close()
|
||||
}
|
||||
|
||||
func (files Files) trimTrainlingWhitespace() error {
|
||||
f, err := os.Open(string(files[0]))
|
||||
if os.IsNotExist(err) {
|
||||
return nil
|
||||
}
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
defer f.Close()
|
||||
|
||||
return io.EOF
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user