Skip to content

Commit

Permalink
First commit
Browse files Browse the repository at this point in the history
  • Loading branch information
stathissideris committed Sep 13, 2011
0 parents commit 1c34926
Show file tree
Hide file tree
Showing 5 changed files with 61 additions and 0 deletions.
7 changes: 7 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
pom.xml
*jar
/lib/
/classes/
.lein-failures
.lein-deps-sum
/data/
Empty file added README.md
Empty file.
5 changes: 5 additions & 0 deletions project.clj
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
(defproject moneyz "1.0.0-SNAPSHOT"
:description "FIXME: write description"
:dependencies [[org.clojure/clojure "1.2.1"]
[org.clojure/clojure-contrib "1.2.0"]
[incanter "1.2.3"]])
43 changes: 43 additions & 0 deletions src/moneyz/core.clj
Original file line number Diff line number Diff line change
@@ -0,0 +1,43 @@
(ns moneyz.core
(:use (incanter core charts io))
(:import (java.text SimpleDateFormat)))

#_(defn read-data
"Use incanter's read-dataset instead."
[filename]
(let [reader (CSVReader. (get-input-reader filename) \, \" 0)
data (doall (map seq (seq (.readAll reader))))
columns (first data)
rows (rest data)]
(incanter.core.Dataset. (into [] columns) rows)))

(defn parse-date [date] (.parse (SimpleDateFormat. "dd/MM/yyyy") date))
(defn parse-dates [dates] (map parse-date dates))
(defn to-millis [dates] (map #(.getTime %) dates))
(def process-dates (comp to-millis parse-dates))

(def d1
(read-dataset
"/Users/sideris/devel/moneyz/data/2011-08-31-statement export.csv"
:header true))

(def d2
(read-dataset
"/Users/sideris/devel/moneyz/data/2011-09-05-statement export.csv"
:header true))

(defn merge-statements
[d1 d2]
(dataset
(:column-names d1)
(sort-by :Date (distinct (concat (:rows d1) (:rows d2))))))

(defn group-by-account [statement]
(into {}
(map
(fn [[key d]] [key (dataset (:column-names statement) d)])
(group-by :Account (:rows statement)))))

(def d (group-by-account (merge-statements d1 d2)))

;;(view (time-series-plot (process-dates ($ :Date d)) ($ :Amount d)))
6 changes: 6 additions & 0 deletions test/moneyz/test/core.clj
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
(ns moneyz.test.core
(:use [moneyz.core])
(:use [clojure.test]))

(deftest replace-me ;; FIXME: write
(is false "No tests have been written."))

0 comments on commit 1c34926

Please sign in to comment.