#FEATURE by cg
class: PrintfScanf class
new scanf format: %n to read any number
comment/format in:
#format_scanf
#sscanf:fromString:
changed: #scanArgFrom:to:format:
--- a/PrintfScanf.st Fri May 17 13:10:48 2019 +0200
+++ b/PrintfScanf.st Sat May 18 13:09:14 2019 +0200
@@ -286,6 +286,7 @@
's' string
'u' integer
'x' base-16 hex
+ 'n' any number
Length prefix:
@@ -1050,6 +1051,9 @@
('Bb' includes:char) ifTrue:[
final value:(Integer readFrom:data radix:2)
].
+ ('Nn' includes:char) ifTrue:[
+ final value:(Number readFrom:data)
+ ].
"
'%d %x' sscanf:'1234 ff00'
@@ -1061,10 +1065,14 @@
('%hf' sscanf:'1234') first
('%Lf' sscanf:'1234') first
('%LLf' sscanf:'1234') first
+ ('%n' sscanf:'1234') first
+ ('%n' sscanf:'1234.456') first
+ ('%n %n' sscanf:'1234.456 123')
"
"Created: / 19-06-2017 / 15:53:28 / cg"
"Modified (comment): / 14-07-2017 / 11:31:01 / cg"
+ "Modified (comment): / 18-05-2019 / 13:08:30 / Claus Gittinger"
! !
!PrintfScanf class methodsFor:'scanning'!
@@ -1104,7 +1112,12 @@
^ self scanf:formatString fromStream:(ReadStream on:aString)
+ "
+ self sscanf:'%d %d %d' fromString:'123 45 999'
+ "
+
"Modified: / 19-06-2017 / 15:53:59 / cg"
+ "Modified (comment): / 18-05-2019 / 13:01:28 / Claus Gittinger"
! !
!PrintfScanf methodsFor:'helpers'!