(ledger-add-entry): Use Eshell to do argument parsing, since that's

the easiest way to tell if '1 "2 3" 4' contains three arguments or
four.
This commit is contained in:
John Wiegley 2005-02-17 01:21:44 +00:00
parent 2cf6fe3fc7
commit 6a5465588e

View file

@ -127,7 +127,10 @@ Return the difference in the format of a time value."
(interactive
(list
(read-string "Entry: " (concat ledger-year "/" ledger-month "/"))))
(let* ((date (car (split-string entry-text)))
(let* ((args (with-temp-buffer
(insert entry-text)
(eshell-parse-arguments (point-min) (point-max))))
(date (car args))
(insert-year t)
(ledger-buf (current-buffer))
exit-code)
@ -145,13 +148,12 @@ Return the difference in the format of a time value."
(setq exit-code
(apply #'ledger-run-ledger
ledger-buf "entry"
(split-string
(with-temp-buffer
(insert entry-text)
(goto-char (point-min))
(while (re-search-forward "\\([&$]\\)" nil t)
(replace-match "\\\\\\1"))
(buffer-string)))))
(mapcar
(function
(lambda (x)
(replace-regexp-in-string "\\([&$]\\)" "\\\\\\1"
(eval x))))
args)))
(if (= 0 exit-code)
(if insert-year
(buffer-substring 2 (point-max))