summaryrefslogtreecommitdiff
path: root/lisp/ldg-commodities.el
diff options
context:
space:
mode:
Diffstat (limited to 'lisp/ldg-commodities.el')
-rw-r--r--lisp/ldg-commodities.el27
1 files changed, 17 insertions, 10 deletions
diff --git a/lisp/ldg-commodities.el b/lisp/ldg-commodities.el
index c5500785..a3cc8951 100644
--- a/lisp/ldg-commodities.el
+++ b/lisp/ldg-commodities.el
@@ -38,16 +38,23 @@
(with-temp-buffer
(insert str)
(goto-char (point-min))
- (re-search-forward "-?[1-9][0-9]*[.,][0-9]*" nil t)
- (setq val
- (string-to-number
- (ledger-commodity-string-number-decimalize
- (delete-and-extract-region (match-beginning 0) (match-end 0)) :from-user)))
- (goto-char (point-min))
- (re-search-forward "[^[:space:]]" nil t)
- (setq comm
- (delete-and-extract-region (match-beginning 0) (match-end 0)))
- (list val comm))))
+ (cond ((re-search-forward "-?[1-9][0-9]*[.,][0-9]*" nil t)
+ ;; found a decimal number
+ (setq val
+ (string-to-number
+ (ledger-commodity-string-number-decimalize
+ (delete-and-extract-region (match-beginning 0) (match-end 0)) :from-user)))
+ (goto-char (point-min))
+ (re-search-forward "[^[:space:]]" nil t)
+ (setq comm
+ (delete-and-extract-region (match-beginning 0) (match-end 0)))
+ (list val comm))
+ ((re-search-forward "0" nil t)
+ ;; couldn't find a decimal number, look for a single 0,
+ ;; indicating account with zero balance
+ (list 0 ledger-reconcile-default-commodity))
+ (t
+ (error "split-commodity-string: cannot parse commodity string: %S" str))))))
(defun ledger-string-balance-to-commoditized-amount (str)