> On 3 Oct 2017, at 10:53, Guillermo Polito <guillermopol...@gmail.com> wrote:
> 
> Yes, in my todo, but changing FileReference like that will break a lot of 
> backwards compatibility :)

Yes it will.

I have said this before: the problem is that the current stream API is much too 
wide, we need to trim it to something closer to what a stream is (and not 
assume that a stream always lives on top of a collection).

We have compassable streams now, they work well. But they cannot implement the 
full API (since they are not streaming over collections). The biggest issue are 
the positioning message (like #skip: and #position:) which assume you known 
where you are and can move around at will, which is not possible for a real, 
indefinite stream.

> On Mon, Oct 2, 2017 at 10:22 AM, Stephane Ducasse <stepharo.s...@gmail.com> 
> wrote:
> Yes this is why we should continue to clean and remove cruft. Now I
> remember that guille did that for File.
> 
> Stef
> 
> On Mon, Oct 2, 2017 at 3:20 PM, Sven Van Caekenberghe <s...@stfx.eu> wrote:
> > If you do
> >
> >   (File named: '/tmp/lines.txt') readStream[Do:]
> >
> > you seem to get a binary stream (this is the new implementation I guess), 
> > when you go via FileReference you get a character stream (but that are old 
> > ones).
> >
> > I know, very confusing. We're always in the midst of transitions.
> >
> >> On 2 Oct 2017, at 15:17, Stephane Ducasse <stepharo.s...@gmail.com> wrote:
> >>
> >> Sven I do not see the binary stream. Is it ZnCharacterReadStream?
> >>
> >> Stef
> >>
> >> On Mon, Oct 2, 2017 at 1:22 PM, Sven Van Caekenberghe <s...@stfx.eu> wrote:
> >>> Hi,
> >>>
> >>>> On 2 Oct 2017, at 13:07, Dirk Olmes <d...@xanthippe.ping.de> wrote:
> >>>>
> >>>> Hi,
> >>>>
> >>>> I'm trying to get started with Pharo doing something really simple - at
> >>>> least that's what I thought ... I'm trying to read a text file line by 
> >>>> line.
> >>>>
> >>>> If I use  File named: '/tmp/linex.txt' readStream nextLine I'll get a
> >>>> debugger telling me that BinaryFileStream does not understand nextLine.
> >>>>
> >>>> Now I've tried my best to find a stream that may be reading plain text
> >>>> lines but to no avail ...
> >>>>
> >>>> Help!
> >>>>
> >>>> -dirk
> >>>
> >>> $ cat > /tmp/lines.txt
> >>> one
> >>> two
> >>> three
> >>>
> >>> (FileLocator temp / 'lines.txt') contents lines.
> >>>
> >>> '/tmp/lines.txt' asFileReference contents lines.
> >>>
> >>> '/tmp/lines.txt' asFileReference readStreamDo: [ :in |
> >>>  Array streamContents: [ :out |
> >>>    [ in atEnd ] whileFalse: [ out nextPut: in nextLine ] ] ].
> >>>
> >>> (File named: '/tmp/lines.txt') readStreamDo: [ :in |
> >>>  | characterStream |
> >>>  characterStream := ZnCharacterReadStream on: in.
> >>>  Array streamContents: [ :out |
> >>>    [ characterStream atEnd ] whileFalse: [ out nextPut: characterStream 
> >>> nextLine ] ] ].
> >>>
> >>> They all return #('one' 'two' 'three').
> >>>
> >>> In the last, more complex example, you first get a binary stream (and a 
> >>> 'line' is a character based concept), so wrapping the binary stream in a 
> >>> character read stream (which does know about lines) solves the problem.
> >>>
> >>> HTH,
> >>>
> >>> Sven
> >>
> >
> >
> 
> 
> 
> 
> -- 
>    
> Guille Polito
> Research Engineer
> 
> Centre de Recherche en Informatique, Signal et Automatique de Lille
> CRIStAL - UMR 9189
> French National Center for Scientific Research - http://www.cnrs.fr
> 
> Web: http://guillep.github.io
> Phone: +33 06 52 70 66 13


Reply via email to