AUDIT: r17490 - gnucash/trunk/src/import-export/qif-import - Bug #141002: QIF Import: Allow minus signs at the end of numeric values, e.g. "$10.00-".
Charles Day
cedayiv at cvs.gnucash.org
Tue Sep 2 20:11:32 EDT 2008
Author: cedayiv
Date: 2008-09-02 20:11:32 -0400 (Tue, 02 Sep 2008)
New Revision: 17490
Trac: http://svn.gnucash.org/trac/changeset/17490
Modified:
gnucash/trunk/src/import-export/qif-import/qif-parse.scm
Log:
Bug #141002: QIF Import: Allow minus signs at the end of numeric values, e.g. "$10.00-".
BP
Modified: gnucash/trunk/src/import-export/qif-import/qif-parse.scm
===================================================================
--- gnucash/trunk/src/import-export/qif-import/qif-parse.scm 2008-09-02 20:20:09 UTC (rev 17489)
+++ gnucash/trunk/src/import-export/qif-import/qif-parse.scm 2008-09-03 00:11:32 UTC (rev 17490)
@@ -19,13 +19,13 @@
(define decimal-radix-regexp
(make-regexp
- "^ *[$£]?[+-]?[$£]?[0-9]+$|^ *[$£]?[+-]?[$£]?[0-9]?[0-9]?[0-9]?([,'][0-9][0-9][0-9])*(\\.[0-9]*)? *$|^ *[$£]?[+-]?[$£]?[0-9]+\\.[0-9]* *$"))
+ "^ *[$£]?[+-]?[$£]?[0-9]+[+-]?$|^ *[$£]?[+-]?[$£]?[0-9]?[0-9]?[0-9]?([,'][0-9][0-9][0-9])*(\\.[0-9]*)?[+-]? *$|^ *[$£]?[+-]?[$£]?[0-9]+\\.[0-9]*[+-]? *$"))
(define comma-radix-regexp
(make-regexp
- "^ *[$£]?[+-]?[$£]?[0-9]+$|^ *[$£]?[+-]?[$£]?[0-9]?[0-9]?[0-9]?([\\.'][0-9][0-9][0-9])*(,[0-9]*)? *$|^ *[$£]?[+-]?[$£]?[0-9]+,[0-9]* *$"))
+ "^ *[$£]?[+-]?[$£]?[0-9]+[+-]?$|^ *[$£]?[+-]?[$£]?[0-9]?[0-9]?[0-9]?([\\.'][0-9][0-9][0-9])*(,[0-9]*)?[+-]? *$|^ *[$£]?[+-]?[$£]?[0-9]+,[0-9]*[+-]? *$"))
-(define integer-regexp (make-regexp "^[$£]?[+-]?[$£]?[0-9]+ *$"))
+(define integer-regexp (make-regexp "^[$£]?[+-]?[$£]?[0-9]+[+-]? *$"))
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; qif-split:parse-category
@@ -547,39 +547,43 @@
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
(define (qif-parse:parse-number/format value-string format)
- (case format
- ((decimal)
- (let* ((filtered-string (gnc:string-delete-chars value-string ",$£'"))
- (read-val (with-input-from-string filtered-string
- (lambda () (read)))))
- (if (number? read-val)
- (double-to-gnc-numeric
- (+ 0.0 read-val) GNC-DENOM-AUTO
- (logior (GNC-DENOM-SIGFIGS
- (string-length (string-remove-char filtered-string #\.)))
- GNC-RND-ROUND))
- (gnc-numeric-zero))))
- ((comma)
- (let* ((filtered-string (gnc:string-replace-char
- (gnc:string-delete-chars value-string ".$£'")
- #\, #\.))
- (read-val (with-input-from-string filtered-string
- (lambda () (read)))))
- (if (number? read-val)
- (double-to-gnc-numeric
- (+ 0.0 read-val) GNC-DENOM-AUTO
- (logior (GNC-DENOM-SIGFIGS
- (string-length (string-remove-char filtered-string #\.)))
- GNC-RND-ROUND))
- (gnc-numeric-zero))))
- ((integer)
- (let ((read-val (with-input-from-string
- (gnc:string-delete-chars value-string "$£'")
- (lambda () (read)))))
- (if (number? read-val)
- (double-to-gnc-numeric
- (+ 0.0 read-val) 1 GNC-RND-ROUND)
- (gnc-numeric-zero))))))
+ (let ((minus-index (string-index value-string #\-))
+ (filtered-string (gnc:string-delete-chars value-string "$£'+-")))
+ (case format
+ ((decimal)
+ (let* ((read-string (string-remove-char filtered-string #\,))
+ (read-val (with-input-from-string read-string
+ (lambda () (read)))))
+ (if (number? read-val)
+ (double-to-gnc-numeric
+ (if minus-index (- 0.0 read-val) (+ 0.0 read-val))
+ GNC-DENOM-AUTO
+ (logior (GNC-DENOM-SIGFIGS
+ (string-length (string-remove-char read-string #\.)))
+ GNC-RND-ROUND))
+ (gnc-numeric-zero))))
+ ((comma)
+ (let* ((read-string (gnc:string-replace-char
+ (string-remove-char filtered-string #\.)
+ #\, #\.))
+ (read-val (with-input-from-string read-string
+ (lambda () (read)))))
+ (if (number? read-val)
+ (double-to-gnc-numeric
+ (if minus-index (- 0.0 read-val) (+ 0.0 read-val))
+ GNC-DENOM-AUTO
+ (logior (GNC-DENOM-SIGFIGS
+ (string-length (string-remove-char read-string #\.)))
+ GNC-RND-ROUND))
+ (gnc-numeric-zero))))
+ ((integer)
+ (let ((read-val (with-input-from-string filtered-string
+ (lambda () (read)))))
+ (if (number? read-val)
+ (double-to-gnc-numeric
+ (if minus-index (- 0.0 read-val) (+ 0.0 read-val))
+ 1 GNC-RND-ROUND)
+ (gnc-numeric-zero)))))))
(define (qif-parse:check-number-formats amt-strings formats)
(let ((retval formats))
More information about the gnucash-changes
mailing list