|
@@ -111,7 +111,7 @@
|
|
|
(error () (.fail)))))
|
|
(error () (.fail)))))
|
|
|
|
|
|
|
|
(defun parse-date (text &optional default-year)
|
|
(defun parse-date (text &optional default-year)
|
|
|
- (parse (.simple-date default-year) text))
|
|
|
|
|
|
|
+ (parse (.prog1 (.simple-date default-year) (.eol)) text))
|
|
|
|
|
|
|
|
(defun .status ()
|
|
(defun .status ()
|
|
|
(.is 'member '(#\! #\*)))
|
|
(.is 'member '(#\! #\*)))
|
|
@@ -130,6 +130,9 @@
|
|
|
(.char= #\Newline)) :result-type 'string)))
|
|
(.char= #\Newline)) :result-type 'string)))
|
|
|
(.identity (strip-space account))))
|
|
(.identity (strip-space account))))
|
|
|
|
|
|
|
|
|
|
+(defun parse-account (text)
|
|
|
|
|
+ (parse (.prog1 (.account) (.eol)) text))
|
|
|
|
|
+
|
|
|
(defun .money-number (thousands-sep decimal-sep)
|
|
(defun .money-number (thousands-sep decimal-sep)
|
|
|
(.let* ((first-part (.while (.is 'digit-char-p) :result-type 'string))
|
|
(.let* ((first-part (.while (.is 'digit-char-p) :result-type 'string))
|
|
|
(rest-parts (.mapcar* (.progn (.char= thousands-sep)
|
|
(rest-parts (.mapcar* (.progn (.char= thousands-sep)
|
|
@@ -184,6 +187,9 @@
|
|
|
quantity)
|
|
quantity)
|
|
|
:commodity commodity)))))
|
|
:commodity commodity)))))
|
|
|
|
|
|
|
|
|
|
+(defun parse-amount (text)
|
|
|
|
|
+ (parse (.prog1 (.amount) (.eol)) text))
|
|
|
|
|
+
|
|
|
(defun .posting ()
|
|
(defun .posting ()
|
|
|
(.let* ((_ (.whitespace))
|
|
(.let* ((_ (.whitespace))
|
|
|
(status (.optional (.prog1 (.status) (.optional (.spaces)))))
|
|
(status (.optional (.prog1 (.status) (.optional (.spaces)))))
|