|
|
@ -82,7 +82,7 @@
|
|
|
|
(file/close f)))
|
|
|
|
(file/close f)))
|
|
|
|
|
|
|
|
|
|
|
|
(defn request-val [label]
|
|
|
|
(defn request-val [label]
|
|
|
|
(print label)
|
|
|
|
(print label ":")
|
|
|
|
(readline))
|
|
|
|
(readline))
|
|
|
|
|
|
|
|
|
|
|
|
(defn new-id []
|
|
|
|
(defn new-id []
|
|
|
@ -98,12 +98,66 @@
|
|
|
|
:title (request-val "Title")})
|
|
|
|
:title (request-val "Title")})
|
|
|
|
save-entries))
|
|
|
|
save-entries))
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
(defn col-length [entries col]
|
|
|
|
|
|
|
|
(or 0
|
|
|
|
|
|
|
|
(max ;(map (fn [entry]
|
|
|
|
|
|
|
|
(length (entry col)))
|
|
|
|
|
|
|
|
entries))))
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
(def vt100-codes
|
|
|
|
|
|
|
|
{:underlined "\e[4m"
|
|
|
|
|
|
|
|
:lightgray "\e[100m"
|
|
|
|
|
|
|
|
:bold "\e[1m"
|
|
|
|
|
|
|
|
:clear "\e[0m"})
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
(defn overview []
|
|
|
|
|
|
|
|
(let [entries (load-entries)
|
|
|
|
|
|
|
|
len-id (max (col-length entries :id)
|
|
|
|
|
|
|
|
(length "Id"))
|
|
|
|
|
|
|
|
len-title (max (col-length entries :title)
|
|
|
|
|
|
|
|
(length "Title"))
|
|
|
|
|
|
|
|
spaces (fn [l m] (string/repeat " " (max 0 (- m l))))]
|
|
|
|
|
|
|
|
(print (vt100-codes :underlined)
|
|
|
|
|
|
|
|
"Id" (spaces 2 len-id)
|
|
|
|
|
|
|
|
" "
|
|
|
|
|
|
|
|
"Title" (spaces 5 len-title)
|
|
|
|
|
|
|
|
(vt100-codes :clear))
|
|
|
|
|
|
|
|
(var ix 0)
|
|
|
|
|
|
|
|
(loop [entry :in entries
|
|
|
|
|
|
|
|
:let [id (entry :id)
|
|
|
|
|
|
|
|
title (entry :title)]]
|
|
|
|
|
|
|
|
(print (if (odd? ix)
|
|
|
|
|
|
|
|
(vt100-codes :lightgray)
|
|
|
|
|
|
|
|
(vt100-codes :bold))
|
|
|
|
|
|
|
|
id (spaces (length id) len-id)
|
|
|
|
|
|
|
|
" "
|
|
|
|
|
|
|
|
title (spaces (length title) len-title)
|
|
|
|
|
|
|
|
(vt100-codes :clear))
|
|
|
|
|
|
|
|
(set ix (inc ix)))))
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
(defn rm []
|
|
|
|
|
|
|
|
(let [id (request-val "Id")
|
|
|
|
|
|
|
|
to-delete (->> (load-entries)
|
|
|
|
|
|
|
|
(filter (fn [e]
|
|
|
|
|
|
|
|
(= id (e :id))))
|
|
|
|
|
|
|
|
first)
|
|
|
|
|
|
|
|
confirm (fn []
|
|
|
|
|
|
|
|
(not= "n" (request-val
|
|
|
|
|
|
|
|
(string "Confirm deletion of "
|
|
|
|
|
|
|
|
(to-delete :title)
|
|
|
|
|
|
|
|
" (Y/n)"))))]
|
|
|
|
|
|
|
|
(when (and to-delete
|
|
|
|
|
|
|
|
(confirm))
|
|
|
|
|
|
|
|
(->> (load-entries)
|
|
|
|
|
|
|
|
(filter (fn [e] (not= id (e :id))))
|
|
|
|
|
|
|
|
(save-entries)))))
|
|
|
|
|
|
|
|
|
|
|
|
(def structure
|
|
|
|
(def structure
|
|
|
|
{"add" add
|
|
|
|
{"add" add
|
|
|
|
"rm" (fn [] (print "rm"))
|
|
|
|
"rm" rm
|
|
|
|
"mod" (fn [] (print "mod"))
|
|
|
|
"mod" (fn [] (print "mod"))
|
|
|
|
"help" help
|
|
|
|
"help" help
|
|
|
|
"" (fn [] (print "overview"))
|
|
|
|
"" overview
|
|
|
|
"quit" quit})
|
|
|
|
"quit" quit})
|
|
|
|
|
|
|
|
|
|
|
|
(defn main [& args]
|
|
|
|
(defn main [& args]
|
|
|
|