printStringWithThousandsSep moved up (also valid for FixedPoint Decimals)
authorClaus Gittinger <cg@exept.de>
Thu, 24 Jul 2008 11:58:24 +0200
changeset 11096 19d6c993e67f
parent 11095 b3998b045684
child 11097 5e4961639e41
printStringWithThousandsSep moved up (also valid for FixedPoint Decimals)
Number.st
--- a/Number.st	Thu Jul 24 11:58:22 2008 +0200
+++ b/Number.st	Thu Jul 24 11:58:24 2008 +0200
@@ -1182,10 +1182,50 @@
     s printOn: aStream leftPaddedTo:size with: padCharacter
 !
 
+printOn:aStream thousandsSeparator:thousandsSeparator
+    "print the receiver as business number with thousands separator to aStream.
+     thousandsSeparator is locale specific and is usually a single quote ('), a comma or period."
+
+    self > 999 ifTrue:[
+        (self // 1000) printOn:aStream thousandsSeparator:thousandsSeparator.
+        thousandsSeparator printOn:aStream.
+        (self truncated \\ 1000) printOn:aStream leftPaddedTo:3 with:$0.
+        ^ self.
+    ].
+    self printOn:aStream.
+
+    "
+     1000000 printOn:Transcript thousandsSeparator:$'
+     12345678 printOn:Transcript thousandsSeparator:$'
+     1234567 printOn:Transcript thousandsSeparator:$'
+     123456 printOn:Transcript thousandsSeparator:$'
+     12345 printOn:Transcript thousandsSeparator:$'
+     1234 printOn:Transcript thousandsSeparator:$'
+     123 printOn:Transcript thousandsSeparator:$'
+    "
+!
+
 printStringRadix:radix
     self subclassResponsibility
 !
 
+printStringWithThousandsSeparator
+    "print the receiver as business number with thousands separator to aStream.
+     Caveat: Should use the separator from the locale here"
+
+    ^ String streamContents:[:s| self printOn:s thousandsSeparator:$'].
+
+    "
+     1000000 printStringWithThousandsSeparator
+     12345678 printStringWithThousandsSeparator
+     1234567 printStringWithThousandsSeparator
+     123456 printStringWithThousandsSeparator
+     12345 printStringWithThousandsSeparator
+     1234 printStringWithThousandsSeparator
+     123 printStringWithThousandsSeparator
+    "
+!
+
 storeOn:aStream
     "append a string for storing the receiver onto the argument,
      aStream - since numbers are literals,they store as they print."
@@ -2010,5 +2050,5 @@
 !Number class methodsFor:'documentation'!
 
 version
-    ^ '$Header: /cvs/stx/stx/libbasic/Number.st,v 1.112 2008-05-09 10:51:58 mb Exp $'
+    ^ '$Header: /cvs/stx/stx/libbasic/Number.st,v 1.113 2008-07-24 09:58:24 cg Exp $'
 ! !