--- a/CharacterArray.st Fri Feb 23 23:27:59 1996 +0100
+++ b/CharacterArray.st Fri Feb 23 23:29:15 1996 +0100
@@ -2341,14 +2341,15 @@
with all \X-character escapes replaced by corresponding-characters.
(similar to the way C-language Strings are converted).
The following escapes are supported:
- \r return character
- \n newline character
- \b backspace character
- \f formfeed character
- \t tab character
- \\ the \ character itself
- \nnn three digit octal number defining the characters ascii value
- \other other
+ \r return character
+ \n newline character
+ \b backspace character
+ \f formfeed character
+ \t tab character
+ \e escape character
+ \\ the \ character itself
+ \nnn three digit octal number defining the characters ascii value
+ \other other
Notice, that \' is NOT a valid escape, since the general syntax of
string constants is not affected by this method.
@@ -2377,21 +2378,21 @@
sz := newSize := self size.
srcIdx := 1.
[(srcIdx := self indexOf:$\ startingAt:srcIdx) ~~ 0] whileTrue:[
- srcIdx == sz ifFalse:[
- newSize := newSize - 1.
- srcIdx := srcIdx + 1.
- next := self at:srcIdx.
- next == $0 ifTrue:[
- [(self at:srcIdx) isDigit] whileTrue:[
- newSize := newSize - 1. srcIdx := srcIdx + 1.
- ]
- ].
- ].
- srcIdx := srcIdx + 1.
+ srcIdx == sz ifFalse:[
+ newSize := newSize - 1.
+ srcIdx := srcIdx + 1.
+ next := self at:srcIdx.
+ next == $0 ifTrue:[
+ [(self at:srcIdx) isDigit] whileTrue:[
+ newSize := newSize - 1. srcIdx := srcIdx + 1.
+ ]
+ ].
+ ].
+ srcIdx := srcIdx + 1.
].
newSize == sz ifTrue:[
- ^ self
+ ^ self
].
newString := self species new:newSize.
@@ -2400,45 +2401,49 @@
"
srcIdx := dstIdx := 1.
[srcIdx <= sz] whileTrue:[
- next := self at:srcIdx.
- srcIdx := srcIdx + 1.
- next == $\ ifTrue:[
- srcIdx <= sz ifTrue:[
- next := self at:srcIdx.
- srcIdx := srcIdx + 1.
- next == $r ifTrue:[
- next := Character return
- ] ifFalse:[
- next == $n ifTrue:[
- next := Character nl
- ] ifFalse:[
- next == $b ifTrue:[
- next := Character backspace
- ] ifFalse:[
- next == $f ifTrue:[
- next := Character newPage
- ] ifFalse:[
- next == $t ifTrue:[
- next := Character tab
- ] ifFalse:[
- next == $0 ifTrue:[
- val := 0.
- [next isDigit] whileTrue:[
- val := val * 8 + next digitValue.
- next := self at:srcIdx.
- srcIdx := srcIdx + 1.
- ].
- next := Character value:val.
- ]
- ]
- ]
- ]
- ]
- ].
- ].
- ].
- newString at:dstIdx put:next.
- dstIdx := dstIdx + 1.
+ next := self at:srcIdx.
+ srcIdx := srcIdx + 1.
+ next == $\ ifTrue:[
+ srcIdx <= sz ifTrue:[
+ next := self at:srcIdx.
+ srcIdx := srcIdx + 1.
+ next == $r ifTrue:[
+ next := Character return
+ ] ifFalse:[
+ next == $n ifTrue:[
+ next := Character nl
+ ] ifFalse:[
+ next == $b ifTrue:[
+ next := Character backspace
+ ] ifFalse:[
+ next == $f ifTrue:[
+ next := Character newPage
+ ] ifFalse:[
+ next == $t ifTrue:[
+ next := Character tab
+ ] ifFalse:[
+ next == $e ifTrue:[
+ next := Character esc
+ ] ifFalse:[
+ next == $0 ifTrue:[
+ val := 0.
+ [next isDigit] whileTrue:[
+ val := val * 8 + next digitValue.
+ next := self at:srcIdx.
+ srcIdx := srcIdx + 1.
+ ].
+ next := Character value:val.
+ ]
+ ]
+ ]
+ ]
+ ]
+ ]
+ ].
+ ].
+ ].
+ newString at:dstIdx put:next.
+ dstIdx := dstIdx + 1.
].
^ newString
@@ -2453,6 +2458,8 @@
'hello\010world' withEscapes
'hello\r\nworld' withEscapes
"
+
+ "Modified: 23.2.1996 / 23:25:43 / cg"
!
withTabs
@@ -3078,5 +3085,5 @@
!CharacterArray class methodsFor:'documentation'!
version
- ^ '$Header: /cvs/stx/stx/libbasic/CharacterArray.st,v 1.54 1996-02-23 21:49:17 cg Exp $'
+ ^ '$Header: /cvs/stx/stx/libbasic/CharacterArray.st,v 1.55 1996-02-23 22:29:15 cg Exp $'
! !