allllmost bpi
parent
f41ab4cb53
commit
4a4bcf3302
|
|
@ -1,6 +1,13 @@
|
||||||
package ledger
|
package ledger
|
||||||
|
|
||||||
import "io"
|
import (
|
||||||
|
"bufio"
|
||||||
|
"bytes"
|
||||||
|
"fmt"
|
||||||
|
"io"
|
||||||
|
"os"
|
||||||
|
"strconv"
|
||||||
|
)
|
||||||
|
|
||||||
type BPIs string
|
type BPIs string
|
||||||
|
|
||||||
|
|
@ -13,5 +20,37 @@ func NewBPIs(p string) (BPIs, error) {
|
||||||
}
|
}
|
||||||
|
|
||||||
func (bpis BPIs) values() (map[Currency]BPI, error) {
|
func (bpis BPIs) values() (map[Currency]BPI, error) {
|
||||||
return nil, io.EOF
|
f, err := os.Open(string(bpis))
|
||||||
|
if os.IsNotExist(err) {
|
||||||
|
return nil, nil
|
||||||
|
}
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
defer f.Close()
|
||||||
|
|
||||||
|
result := make(map[Currency]BPI)
|
||||||
|
|
||||||
|
r := bufio.NewReader(f)
|
||||||
|
for {
|
||||||
|
line, err := readTransactionLine(r)
|
||||||
|
if len(line) > 0 {
|
||||||
|
fields := bytes.Fields(line)
|
||||||
|
if len(fields) > 3 {
|
||||||
|
date := fields[1]
|
||||||
|
currency := fields[len(fields)-2]
|
||||||
|
value, err := strconv.ParseFloat(string(fields[len(fields)-1][1:]), 64)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
return nil, fmt.Errorf("what do with %s/%s/%.2f?", date, currency, value)
|
||||||
|
}
|
||||||
|
return nil, fmt.Errorf("what do: %s", line)
|
||||||
|
}
|
||||||
|
if err == io.EOF {
|
||||||
|
return result, nil
|
||||||
|
} else if err != nil {
|
||||||
|
return result, err
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue