Hi Monty,

> On 18 Jun 2018, at 23:43, monty <mon...@programmer.net> wrote:
> 
> They still use (binary) StandardFileStreams on Pharo and Squeak. But since 
> it's done through dynamically chosen file stream factory classes 
> (XMLFileReadStreamFactory and XMLFileWriteStreamFactory), it's easy add 
> support for other stream classes. (The GemStone compat .mcz adds factories 
> for GsFile read/write factories, for example).
> 
> #preferredImplementation selects which implementation to use in the hierarchy 
> when there's more than one supported (#isSupportedImplementation).
> ___
> montyos.wordpress.com
> 
> 
>> Sent: Monday, June 18, 2018 at 1:34 AM
>> From: "Sven Van Caekenberghe" <s...@stfx.eu>
>> To: "Any question about pharo is welcome" <pharo-users@lists.pharo.org>
>> Subject: Re: [Pharo-users] Lost in stream
>> 
>> 
>> 
>>> On 18 Jun 2018, at 02:18, monty <mon...@programmer.net> wrote:
>>> 
>>> Also consider using XMLParser's built-in file reading support: 
>>> #parseFileNamed:/#onFileNamed:. They work cross platform (Squeak, GS), and 
>>> handle character decoding.
>> 
>> Monty, do these (already) work with all the latest changes in Pharo 7, I 
>> mean the deprecation of FileStream and subclasses as well as 
>> [RW|MultiByte]BinaryOrTextStream for FileReference, File and Zn streams ?
>> 
>> If not, we should help you.
>> 
>> Sven
>> 
> 

Here is an attempt at an implementation (untested):

Change 

XMLStandardFileStream[Read|Write]StreamFactory class>>isSupportedImplementation
        ^ (XMLClassFinder hasClassNamed: #StandardFileStream)
                and: [ (XMLClassFinder classNamed: #StandardFileStream) 
isDeprecated not ]

New 

subclasses XMLPharoFile[Read|Write]StreamFactory

XMLPharoFile[Read|Write]StreamFactory class>>#isSupportedImplementation
        ^ (XMLClassFinder hasClassNamed: #File)
                and: [ (XMLClassFinder classNamed: #FileStream) isDeprecated ]

XMLPharoFileReadStreamFactory class>>basicOnPath: aPathString
        ^ aPathString asFileReference binaryReadStream

XMLPharoFileWriteStreamFactory class>>basicOnPath: aPathString
        ^ aPathString asFileName ensureDelete binaryWriteStream

File and FileStream have existed in Pharo for quite a while, it is only after 
FileStream and subclasses where deprecated that we can speak of a real switch.

You also have XMLFileSystemFileHandle that could be used directly, I guess. But 
you pass on paths as strings, so if you want to keep that, the above should 
work AFAIKT.

Regards,

Sven


Reply via email to