FilteringStream.st
changeset 885 c31412b26306
parent 479 9653144c97b4
child 889 b3bfa0862f55
--- a/FilteringStream.st	Fri Feb 18 15:40:57 2000 +0100
+++ b/FilteringStream.st	Thu Mar 02 15:15:13 2000 +0100
@@ -1,6 +1,8 @@
+"{ Package: 'stx:goodies' }"
+
 "
  COPYRIGHT (c) 1996 by Claus Gittinger
-              All Rights Reserved
+	      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
@@ -23,7 +25,7 @@
 copyright
 "
  COPYRIGHT (c) 1996 by Claus Gittinger
-              All Rights Reserved
+	      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
@@ -62,16 +64,16 @@
     (a Transcript, a RandomNumber generator or even a Plug will do as well).
 
     [instance variables:]
-        inputStream     <Stream>  the stream from which elements are read
-        outputStream    <Stream>  the stream to which elements are written
-        filter          <Block>   the filter block;
-        unbound         <Boolean> if true, the stream is unbound.
+	inputStream     <Stream>  the stream from which elements are read
+	outputStream    <Stream>  the stream to which elements are written
+	filter          <Block>   the filter block;
+	unbound         <Boolean> if true, the stream is unbound.
 
     [author:]
-        Claus Gittinger
+	Claus Gittinger
 
     [See also:]
-        ReadStream WriteStream
+	ReadStream WriteStream
 "
 
 !
@@ -83,17 +85,17 @@
   buffer or to reinvent the read-loop:
   (notice, a FilteringLineStream does this with less overhead,
    due to the byte-wise reading done here)
-                                                                [exBegin]
+								[exBegin]
     |in pusher|
 
     in := 'Makefile' asFilename readStream.
     pusher := FilteringStream readingFrom:in writingTo:Transcript.
     pusher filterUpToEnd
-                                                                [exEnd]
+								[exEnd]
 
 
   filter random numbers:
-                                                                [exBegin]
+								[exBegin]
     |in filter|
 
     in := Random new.
@@ -102,44 +104,44 @@
     filter filter:[:num | ((num >= 0.5) and:[num <= 0.6]) ifTrue:[num] ifFalse:[nil]].
 
     20 timesRepeat:[
-        Transcript showCR:(filter next printString).
+	Transcript showCR:(filter next printString).
     ]
-                                                                [exEnd]
+								[exEnd]
 
   filtering prime numbers:
-                                                                [exBegin]
+								[exBegin]
     |num generator primeFilter addFilter|
 
     num := 1.
     generator := Plug new.
     generator respondTo:#next
-                   with:[num := num + 1. num].
+		   with:[num := num + 1. num].
     generator respondTo:#atEnd
-                   with:[false].
+		   with:[false].
 
     addFilter := [:prime | |newFilter|
-        newFilter := FilteringLineStream basicNew.
-        newFilter filter:[:num | (num \\ prime) == 0 ifTrue:[
-                                    nil
-                                 ] ifFalse:[
-                                    num
-                                 ]
-                         ].
-        newFilter inputStream:primeFilter.
-        primeFilter := newFilter
+	newFilter := FilteringLineStream basicNew.
+	newFilter filter:[:num | (num \\ prime) == 0 ifTrue:[
+				    nil
+				 ] ifFalse:[
+				    num
+				 ]
+			 ].
+	newFilter inputStream:primeFilter.
+	primeFilter := newFilter
     ].
 
     addFilter value:2.
     primeFilter inputStream:generator.
 
     10000 timesRepeat:[
-        |nextPrime|
+	|nextPrime|
 
-        nextPrime := primeFilter next.
-        addFilter value:nextPrime.
-        Transcript showCR:nextPrime.
+	nextPrime := primeFilter next.
+	addFilter value:nextPrime.
+	Transcript showCR:nextPrime.
     ]
-                                                                [exEnd]
+								[exEnd]
 "
 
 
@@ -207,7 +209,7 @@
      push it filtered into the outputStream."
 
     [inputStream atEnd] whileFalse:[
-        self nextPut:(inputStream next)
+	self nextPut:(inputStream next)
     ].
 
     "Created: 2.7.1996 / 21:06:42 / cg"
@@ -224,24 +226,24 @@
     "/ (see #atEnd)
 
     readAhead notNil ifTrue:[
-        input := readAhead.
-        readAhead := nil.
-        ^ input
+	input := readAhead.
+	readAhead := nil.
+	^ input
     ].
 
     [inputStream atEnd] whileFalse:[
-        "/ get an element
-        input := inputStream next.
-        filter isNil ifTrue:[
-            ^ input
-        ].
+	"/ get an element
+	input := inputStream next.
+	filter isNil ifTrue:[
+	    ^ input
+	].
 
-        "/ filter it - this may return nil, to eat it
-        output := filter value:input.
-        output notNil ifTrue:[
-            "/ good - output it
-            ^ output.
-        ].
+	"/ filter it - this may return nil, to eat it
+	output := filter value:input.
+	output notNil ifTrue:[
+	    "/ good - output it
+	    ^ output.
+	].
     ].
     ^ nil
 
@@ -258,12 +260,12 @@
 
     "/ filter it
     filter isNil ifTrue:[
-        outputStream nextPut:something
+	outputStream nextPut:something
     ] ifFalse:[
-        output := filter value:something.
-        output notNil ifTrue:[
-            outputStream nextPut:output
-        ]
+	output := filter value:something.
+	output notNil ifTrue:[
+	    outputStream nextPut:output
+	]
     ]
 
     "Modified: 11.1.1997 / 16:12:52 / cg"
@@ -331,7 +333,7 @@
     "when I am closed, close my input - if any"
 
     inputStream notNil ifTrue:[
-        inputStream close
+	inputStream close
     ]
 
     "Created: 11.1.1997 / 15:27:17 / cg"
@@ -347,8 +349,8 @@
     readAhead notNil ifTrue:[^ false].
 
     filter isNil ifTrue:[
-        "/ then, its easy
-        ^ inputStream atEnd
+	"/ then, its easy
+	^ inputStream atEnd
     ].
 
     "/ with a filter, things are more complicated, 
@@ -356,9 +358,9 @@
 
 
     [inputStream atEnd] whileFalse:[
-        nextElement := inputStream next.
-        readAhead := filter value:nextElement.
-        readAhead notNil ifTrue:[^ false].
+	nextElement := inputStream next.
+	readAhead := filter value:nextElement.
+	readAhead notNil ifTrue:[^ false].
     ].
 
     ^ true
@@ -378,5 +380,5 @@
 !FilteringStream class methodsFor:'documentation'!
 
 version
-    ^ '$Header: /cvs/stx/stx/libbasic2/FilteringStream.st,v 1.5 1997-01-11 18:55:14 cg Exp $'
+    ^ '$Header: /cvs/stx/stx/libbasic2/FilteringStream.st,v 1.6 2000-03-02 14:15:08 cg Exp $'
 ! !