even better context regex generation

This commit is contained in:
Craig Earls 2013-04-10 06:33:46 -07:00
parent dde09ef1a1
commit 1286bdeda0

View file

@ -28,7 +28,8 @@
(eval-when-compile (eval-when-compile
(require 'cl)) (require 'cl))
;; *-string constants are assembled in the single-line-config macro to
;; form the regex and list of elements
(defconst indent-string "\\(^[ \t]+\\)") (defconst indent-string "\\(^[ \t]+\\)")
(defconst status-string "\\([*! ]?\\)") (defconst status-string "\\([*! ]?\\)")
(defconst account-string "[\\[(]?\\(.*?\\)[])]?") (defconst account-string "[\\[(]?\\(.*?\\)[])]?")
@ -49,20 +50,20 @@
(eval (eval
(intern (intern
(concat (symbol-name e) "-string")))))) "[ \t]*$") (concat (symbol-name e) "-string")))))) "[ \t]*$")
,(append elements)))) ,elements)))
(defconst ledger-line-config (defconst ledger-line-config
`((xact (,(single-line-config date nil status nil nil code payee comment) (list (list 'xact (list (single-line-config date nil status nil nil code payee comment)
,(single-line-config date nil status nil nil code payee))) (single-line-config date nil status nil nil code payee)))
(acct-transaction (,(single-line-config indent comment) (list 'acct-transaction (list (single-line-config indent comment)
,(single-line-config indent status account commodity amount nil comment) (single-line-config indent status account commodity amount nil comment)
,(single-line-config indent status account commodity amount) (single-line-config indent status account commodity amount)
,(single-line-config indent status account amount nil commodity comment) (single-line-config indent status account amount nil commodity comment)
,(single-line-config indent status account amount nil commodity) (single-line-config indent status account amount nil commodity)
,(single-line-config indent status account amount) (single-line-config indent status account amount)
,(single-line-config indent status account comment) (single-line-config indent status account comment)
,(single-line-config indent status account))))) (single-line-config indent status account)))))
(defun ledger-extract-context-info (line-type pos) (defun ledger-extract-context-info (line-type pos)
"Get context info for current line with LINE-TYPE. "Get context info for current line with LINE-TYPE.