|
@@ -1,7 +1,14 @@
|
|
|
(in-package #:pta-ledger)
|
|
(in-package #:pta-ledger)
|
|
|
|
|
|
|
|
|
|
+(defstruct amount quantity commodity)
|
|
|
|
|
+(defstruct posting
|
|
|
|
|
+ status account amount unit-price total-price comment)
|
|
|
|
|
+(defstruct entry
|
|
|
|
|
+ date secondary-date status code description comment postings)
|
|
|
|
|
+
|
|
|
(defvar *default-year* nil "Initialized to current year on parsing start. Could be set with directive")
|
|
(defvar *default-year* nil "Initialized to current year on parsing start. Could be set with directive")
|
|
|
(defvar *default-commodity* "RUB" "Could be set with directive")
|
|
(defvar *default-commodity* "RUB" "Could be set with directive")
|
|
|
|
|
+
|
|
|
(defparameter +day+ (* 60 60 24) "day in seconds")
|
|
(defparameter +day+ (* 60 60 24) "day in seconds")
|
|
|
(defun get-date (universal-time)
|
|
(defun get-date (universal-time)
|
|
|
(nreverse (subseq (multiple-value-list (decode-universal-time universal-time)) 3 6)))
|
|
(nreverse (subseq (multiple-value-list (decode-universal-time universal-time)) 3 6)))
|
|
@@ -151,8 +158,6 @@
|
|
|
(.until (.char= #\") :result-type 'string)
|
|
(.until (.char= #\") :result-type 'string)
|
|
|
(.char= #\"))))
|
|
(.char= #\"))))
|
|
|
|
|
|
|
|
-(defstruct amount quantity commodity)
|
|
|
|
|
-
|
|
|
|
|
(defun .amount ()
|
|
(defun .amount ()
|
|
|
(.or
|
|
(.or
|
|
|
(.let* ((sign1 (.optional (.chars #\- #\+)))
|
|
(.let* ((sign1 (.optional (.chars #\- #\+)))
|
|
@@ -177,9 +182,6 @@
|
|
|
quantity)
|
|
quantity)
|
|
|
:commodity commodity)))))
|
|
:commodity commodity)))))
|
|
|
|
|
|
|
|
-(defstruct posting
|
|
|
|
|
- status account amount unit-price total-price comment)
|
|
|
|
|
-
|
|
|
|
|
(defun .posting ()
|
|
(defun .posting ()
|
|
|
(.let* ((_ (.whitespace))
|
|
(.let* ((_ (.whitespace))
|
|
|
(status (.optional (.prog1 (.status) (.optional (.spaces)))))
|
|
(status (.optional (.prog1 (.status) (.optional (.spaces)))))
|
|
@@ -207,9 +209,6 @@
|
|
|
:comment (when (or comment comments)
|
|
:comment (when (or comment comments)
|
|
|
(format nil "~{~A~^~%~}" (remove nil (list* comment comments)))))))))
|
|
(format nil "~{~A~^~%~}" (remove nil (list* comment comments)))))))))
|
|
|
|
|
|
|
|
-(defstruct entry
|
|
|
|
|
- date secondary-date status code description comment postings)
|
|
|
|
|
-
|
|
|
|
|
(defun .entry ()
|
|
(defun .entry ()
|
|
|
(.let* ((date (.simple-date))
|
|
(.let* ((date (.simple-date))
|
|
|
(secondary-date (.optional (.progn (.char= #\=)
|
|
(secondary-date (.optional (.progn (.char= #\=)
|