Update of /project/cl-l10n/cvsroot/cl-l10n In directory common-lisp.net:/tmp/cvs-serv7773
Modified Files: ChangeLog cl-l10n.asd load-locale.lisp printers.lisp tests.lisp Log Message: Changelog 2005-02-01 Date: Mon Jan 31 23:58:25 2005 Author: sross
Index: cl-l10n/ChangeLog diff -u cl-l10n/ChangeLog:1.9 cl-l10n/ChangeLog:1.10 --- cl-l10n/ChangeLog:1.9 Tue Jan 4 07:32:15 2005 +++ cl-l10n/ChangeLog Mon Jan 31 23:58:25 2005 @@ -1,3 +1,8 @@ +2005-02-01 Sean Ross sross@common-lisp.net + * load-locale.lisp: Revert to a default thousands separator + if the the locale to be loaded doesn't have one. + * printers.lisp: Fixed bug in float padding. + 2005-01-04 Sean Ross sross@common-lisp.net * locale.lisp: Changed get-category, get-locale to generic-functions Changed macro get-cat-val to method category-value.
Index: cl-l10n/cl-l10n.asd diff -u cl-l10n/cl-l10n.asd:1.7 cl-l10n/cl-l10n.asd:1.8 --- cl-l10n/cl-l10n.asd:1.7 Thu Dec 30 03:56:38 2004 +++ cl-l10n/cl-l10n.asd Mon Jan 31 23:58:25 2005 @@ -11,7 +11,7 @@ :name "CL-L10N" :author "Sean Ross sdr@jhb.ucs.co.za" :maintainer "Sean Ross sdr@jhb.ucs.co.za" - :version "0.2.0" + :version "0.2.2" :description "Portable CL Locale Support" :long-description "Portable CL Package to support localization" :licence "MIT"
Index: cl-l10n/load-locale.lisp diff -u cl-l10n/load-locale.lisp:1.8 cl-l10n/load-locale.lisp:1.9 --- cl-l10n/load-locale.lisp:1.8 Tue Jan 4 07:32:15 2005 +++ cl-l10n/load-locale.lisp Mon Jan 31 23:58:25 2005 @@ -70,9 +70,16 @@ (handler-case (load-locale (pathname-name x)) (locale-error (c) (warn "Unable to load locale ~A. ~%~A." x c))))))))
+(defvar *default-thousands-sep* #,) + +(defun thousands-sep-char (sep) + (if (> (length sep) 0) + (schar sep 0) + *default-thousands-sep*))
(defun create-number-fmt-string (locale no-ts) - (cl:format nil "~~A~~,,'~A,~A~A~~{~~A~~}" (schar (locale-thousands-sep locale) 0) + (cl:format nil "~~A~~,,'~A,~A~A~~{~~A~~}" + (thousands-sep-char (locale-thousands-sep locale)) (locale-grouping locale) (if no-ts "D" ":D")))
@@ -103,7 +110,7 @@ (princ sym-sep stream)) ;; Actual number (cl:format stream "~~,,'~A,~A~A~~{~~A~~}" - (schar (locale-mon-thousands-sep locale) 0) + (thousands-sep-char (locale-mon-thousands-sep locale)) (locale-mon-grouping locale) (if no-ts "D" ":D")) (unless prec
Index: cl-l10n/printers.lisp diff -u cl-l10n/printers.lisp:1.8 cl-l10n/printers.lisp:1.9 --- cl-l10n/printers.lisp:1.8 Tue Jan 4 07:32:15 2005 +++ cl-l10n/printers.lisp Mon Jan 31 23:58:25 2005 @@ -1,4 +1,4 @@ -;;; -*- Mode: LISP; Syntax: ANSI-Common-Lisp; Base: 10 -*- +;; -*- Mode: LISP; Syntax: ANSI-Common-Lisp; Base: 10 -*- ;; See the file LICENCE for licence information. (in-package :cl-l10n)
@@ -13,9 +13,12 @@ determine the number of zero's to print")
(defun fix-float-string (string size) - (if (string= string "") - (make-string size :initial-element #\0) - string)) + "Pads the string with trailing zero's if it is smaller than size" + (with-output-to-string (s) + (princ string s) + (when (< (length string) size) + (dotimes (x (- size (length string))) + (princ "0" s)))))
(defun format-number (stream arg no-dp no-ts &optional (locale *locale*))
Index: cl-l10n/tests.lisp diff -u cl-l10n/tests.lisp:1.4 cl-l10n/tests.lisp:1.5 --- cl-l10n/tests.lisp:1.4 Thu Dec 30 03:56:38 2004 +++ cl-l10n/tests.lisp Mon Jan 31 23:58:25 2005 @@ -35,7 +35,7 @@
(deftest number.6 (format nil "~v:/cl-l10n:format-number/" "sv_SE" 1/2) - "0,5") + "0,50")
(deftest number.7 (format nil "~v:/cl-l10n:format-number/" "en_GB" 100.12312d0)