"
COPYRIGHT (c) 2004 by eXept Software AG
All Rights Reserved
This software is furnished under a license and may be used
only in accordance with the terms of that license and with the
inclusion of the above copyright notice. This software may not
be provided or otherwise made available to, or used by, any
other person. No title to or ownership of the software is
hereby transferred.
"
"{ Package: 'stx:libbasic' }"
PeekableStream subclass:#EncodedStream
instanceVariableNames:'encoder stream'
classVariableNames:''
poolDictionaries:''
category:'Collections-Text-Encodings'
!
!EncodedStream class methodsFor:'documentation'!
copyright
"
COPYRIGHT (c) 2004 by eXept Software AG
All Rights Reserved
This software is furnished under a license and may be used
only in accordance with the terms of that license and with the
inclusion of the above copyright notice. This software may not
be provided or otherwise made available to, or used by, any
other person. No title to or ownership of the software is
hereby transferred.
"
! !
!EncodedStream class methodsFor:'instance creation'!
stream:streamArg encoder:encoder
^ (self basicNew) stream:streamArg; encoder:encoder
! !
!EncodedStream methodsFor:'accessing'!
contentsSpecies
"Not sure if this is ok"
^ stream contentsSpecies.
"/ ^UnicodeString
"Created: / 14-06-2005 / 17:11:01 / janfrog"
!
encoder
^ encoder
!
encoder:something
encoder := something.
!
readStream
^ self
!
stream
^ stream
!
stream:something
stream := something.
! !
!EncodedStream methodsFor:'stream protocol'!
atEnd
^ stream atEnd
!
close
stream close
!
cr
self nextPutAll:(Character cr asString)
!
emphasis:anObject
stream emphasis:anObject
"Created: / 15-06-2005 / 11:16:33 / janfrog"
!
isOpen
^ stream isOpen
!
next
^encoder readNextCharacterFrom:stream
"Created: / 14-06-2005 / 17:01:39 / janfrog"
!
next:charactersToRead
^encoder readNext:charactersToRead charactersFrom:stream
"Created: / 16-06-2005 / 11:43:43 / masca"
!
nextChunk
|chunk|
chunk := stream nextChunk.
chunk isNil ifTrue:[^ chunk].
^ encoder decodeString:chunk
!
nextChunkPut:chunk
stream nextChunkPut:(encoder encodeString:chunk)
!
nextPut:aCharacter
self nextPutAll:(aCharacter asString).
!
nextPutAll:aCollection
stream nextPutAll:(encoder encodeString:aCollection).
!
peek
^stream peek
"Created: / 20-06-2005 / 10:13:03 / masca"
"Modified: / 20-06-2005 / 13:06:14 / masca"
!
peekFor:aCharacter
^ stream peekFor:aCharacter
!
position
^ stream position
!
position0Based
"to be obsoleted - use position"
^ stream position0Based
!
position0Based:newPosition
"to be obsoleted - use position"
stream position0Based:newPosition
!
position1Based
"to be obsoleted - use position"
^ stream position1Based
!
position1Based:newPosition
"to be obsoleted - use position"
stream position1Based:newPosition
!
position:newPosition
stream position:newPosition
!
setToEnd
stream setToEnd
!
skip: anInteger
"/ Should skip on character basis, not on bytes. This works for XML reader
^stream skip: anInteger
"Created: / 20-06-2005 / 13:06:06 / masca"
!
skipSeparators
^ stream skipSeparators
! !
!EncodedStream methodsFor:'utilities'!
skipEncodingChunk
|pos chunk tree|
pos := self position.
chunk := self nextChunk.
tree := (Parser parseExpression:chunk).
"/ if this is a valid chunk (i.e. not a comment or encoding-directive),
"/ then position back, so it will be processed as usual.
tree notNil ifTrue:[
self position:pos
]
! !
!EncodedStream class methodsFor:'documentation'!
version
^ '$Id: EncodedStream.st 10473 2009-10-24 15:48:19Z vranyj1 $'
! !