--- a/LineNumberReadStream.st Thu Jul 17 15:24:40 2003 +0200
+++ b/LineNumberReadStream.st Mon Jul 21 11:12:36 2003 +0200
@@ -15,7 +15,7 @@
"{ Package: 'stx:goodies' }"
FilteringStream subclass:#LineNumberReadStream
- instanceVariableNames:'lineNumber'
+ instanceVariableNames:'lineNumber lineStartPosition'
classVariableNames:''
poolDictionaries:''
category:'Streams-Misc'
@@ -41,18 +41,19 @@
documentation
"
- This filter keeps track of the current line, while
- passing text from its inputStream to its outputStream.
+ This filter keeps track of the current line, and optionally
+ the current lines start position (if the input stream is positionable).
+ while passing text from its inputStream to its outputStream.
Can be placed in-between text processing and the texts
input stream, and let it keep track of the lineNumber.
[see also:]
- ReadStream WriteStream ExternalStream FileStream
- FilteringStream FilteringLineStream
+ ReadStream WriteStream ExternalStream FileStream
+ FilteringStream FilteringLineStream
[author:]
- Claus Gittinger
+ Claus Gittinger
"
!
@@ -110,6 +111,12 @@
"Created: 11.1.1997 / 16:57:10 / cg"
"Modified: 11.1.1997 / 16:57:22 / cg"
+!
+
+lineStartPosition
+ "return the current lines start position"
+
+ ^ lineStartPosition
! !
!LineNumberReadStream methodsFor:'initialization'!
@@ -118,13 +125,19 @@
super initialize.
lineNumber := 1.
+ inputStream isPositionable ifTrue:[
+ lineStartPosition := inputStream position.
+ ].
filter := [:char |
- char == Character cr ifTrue:[
- lineNumber := lineNumber + 1.
- ].
- char
- ].
+ char == Character cr ifTrue:[
+ lineNumber := lineNumber + 1.
+ inputStream isPositionable ifTrue:[
+ lineStartPosition := inputStream position.
+ ].
+ ].
+ char
+ ].
"Modified: 11.1.1997 / 16:58:42 / cg"
! !
@@ -132,5 +145,5 @@
!LineNumberReadStream class methodsFor:'documentation'!
version
- ^ '$Header: /cvs/stx/stx/libbasic2/LineNumberReadStream.st,v 1.3 2003-06-09 16:20:24 cg Exp $'
+ ^ '$Header: /cvs/stx/stx/libbasic2/LineNumberReadStream.st,v 1.4 2003-07-21 09:12:36 cg Exp $'
! !