--- a/PeekableStream.st Thu Sep 21 17:42:44 2006 +0200
+++ b/PeekableStream.st Thu Sep 21 18:21:27 2006 +0200
@@ -14,7 +14,8 @@
Stream subclass:#PeekableStream
instanceVariableNames:''
- classVariableNames:'ErrorDuringFileInSignal CurrentFileInDirectoryQuerySignal'
+ classVariableNames:'ErrorDuringFileInSignal CurrentFileInDirectoryQuerySignal
+ CurrentSourceContainerQuery'
poolDictionaries:''
category:'Streams'
!
@@ -60,6 +61,11 @@
CurrentFileInDirectoryQuerySignal nameClass:self message:#currentFileInDirectoryQuerySignal.
CurrentFileInDirectoryQuerySignal notifierString:'query for current directory when filing in'.
CurrentFileInDirectoryQuerySignal handlerBlock:[:ex | ex proceedWith:Filename currentDirectory].
+
+ CurrentSourceContainerQuery := QuerySignal new.
+ CurrentSourceContainerQuery nameClass:self message:#currentClassFilenameQuery.
+ CurrentSourceContainerQuery notifierString:'query for current sorce container name when filing in'.
+ CurrentSourceContainerQuery handlerBlock:[:ex | ex proceedWith:nil].
]
"
@@ -77,6 +83,14 @@
current directory, by asking this querySignal (which is nice sometimes)."
^ CurrentFileInDirectoryQuerySignal
+!
+
+currentSourceContainerQuery
+ "return the querySignal, which can be used to ask for the current source container filename
+ during a fileIn
+ Using this, allows for the loaded code to remember the classes file name."
+
+ ^ CurrentSourceContainerQuery
! !
!PeekableStream class methodsFor:'queries'!
@@ -85,6 +99,12 @@
"during a fileIn (if a script), the script can ask for the current directory"
^ CurrentFileInDirectoryQuerySignal query
+!
+
+currentSourceContainer
+ "during a fileIn (if a script), the script can ask for the current filename"
+
+ ^ CurrentSourceContainerQuery query
! !
!PeekableStream methodsFor:'chunk input/output'!
@@ -573,7 +593,9 @@
[
Smalltalk systemPath:(oldPath copy addFirst:thisDirectoryPathName; yourself).
CurrentFileInDirectoryQuerySignal answer:thisDirectory do:[
- val := self basicFileInNotifying:notifiedLoader passChunk:passChunk.
+ CurrentSourceContainerQuery answer:self do:[
+ val := self basicFileInNotifying:notifiedLoader passChunk:passChunk.
+ ].
]
] ensure:[
"take care, someone could have changed SystemPath during fileIn!!"
@@ -949,7 +971,7 @@
!PeekableStream class methodsFor:'documentation'!
version
- ^ '$Header: /cvs/stx/stx/libbasic/PeekableStream.st,v 1.29 2006-05-08 16:54:42 stefan Exp $'
+ ^ '$Header: /cvs/stx/stx/libbasic/PeekableStream.st,v 1.30 2006-09-21 16:21:27 stefan Exp $'
! !
PeekableStream initialize!