fish-js
Version:
a cli thing for sorting out personal finance
44 lines (35 loc) • 781 B
JavaScript
var defaults = require('lodash').defaults
var parse = require('csv').parse
var normalize = require('./normalize')
var summarize = require('./summarize')
function fish(data, conf) {
conf = defaults(conf || {}, {
tags: {},
fields: {
amount: 'amount',
description: 'description'
},
fallbackTag: 'unaccounted'
})
return summarize(normalize(data, conf), conf)
}
function csv(data, conf, done) {
if (arguments.length < 3) {
done = conf
conf = {}
}
var opts = conf.csv || {}
opts.columns = true
parse(data, opts, function (err, data) {
if (err) return done(err)
var result
try {
result = fish(data, conf)
} catch (e) {
done(e)
}
done(null, result)
})
}
fish.csv = csv
module.exports = fish