--- a/AbstractSourceCodeManager.st Fri Jul 12 15:57:13 2013 +0200
+++ b/AbstractSourceCodeManager.st Fri Jul 12 15:57:33 2013 +0200
@@ -2209,6 +2209,15 @@
The classes source code is extracted using the revision and the sourceCodeInfo,
which itself is extracted from the classes packageString."
+ ^ self getSourceStreamFor:aClass revision:aRevisionStringOrNil cache:true
+!
+
+getSourceStreamFor:aClass revision:aRevisionStringOrNil cache:cache
+ "extract a classes source code and return an open readStream on it.
+ A revision of nil selects the current (in image) revision.
+ The classes source code is extracted using the revision and the sourceCodeInfo,
+ which itself is extracted from the classes packageString."
+
|classFileName binaryRevision revision revisionUsed
packageDir moduleDir sourceInfo revForMeOrNil|
@@ -2256,25 +2265,29 @@
sourceInfo := self sourceInfoOfClass:aClass.
sourceInfo isNil ifTrue:[
- ('SourceCodeManager [warning]: no sourceInfo for class "%1"' bindWith:aClass name) infoPrintCR.
- ^ nil
- ].
-
- packageDir := self directoryFromSourceInfo:sourceInfo.
- packageDir isNil ifTrue:[
+"/ ('SourceCodeManager [warning]: no sourceInfo for class "%1"' bindWith:aClass name) infoPrintCR.
+"/ ^ nil
+ "/ let's hope...
+ classFileName := aClass classFilename.
packageDir := aClass package asPackageId directory.
moduleDir := aClass package asPackageId module.
] ifFalse:[
- moduleDir := self moduleFromSourceInfo:sourceInfo. "/ use the modules name as CVS module
+ packageDir := self directoryFromSourceInfo:sourceInfo.
+ packageDir isNil ifTrue:[
+ packageDir := aClass package asPackageId directory.
+ moduleDir := aClass package asPackageId module.
+ ] ifFalse:[
+ moduleDir := self moduleFromSourceInfo:sourceInfo. "/ use the modules name as CVS module
+ ].
+ classFileName := self containerFromSourceInfo:sourceInfo.
].
- classFileName := self containerFromSourceInfo:sourceInfo.
^ self
streamForClass:aClass
fileName:classFileName
revision:revisionUsed
directory:packageDir
module:moduleDir
- cache:true
+ cache:cache
"Created: / 12-10-1996 / 17:21:52 / cg"
"Modified: / 29-09-2011 / 22:02:55 / cg"
@@ -3863,15 +3876,15 @@
!AbstractSourceCodeManager class methodsFor:'documentation'!
version
- ^ '$Header: /cvs/stx/stx/libbasic3/AbstractSourceCodeManager.st,v 1.312 2013-06-25 17:13:34 cg Exp $'
+ ^ '$Header: /cvs/stx/stx/libbasic3/AbstractSourceCodeManager.st,v 1.313 2013-07-12 13:57:33 cg Exp $'
!
version_CVS
- ^ '$Header: /cvs/stx/stx/libbasic3/AbstractSourceCodeManager.st,v 1.312 2013-06-25 17:13:34 cg Exp $'
+ ^ '$Header: /cvs/stx/stx/libbasic3/AbstractSourceCodeManager.st,v 1.313 2013-07-12 13:57:33 cg Exp $'
!
version_SVN
- ^ '$Id: AbstractSourceCodeManager.st,v 1.312 2013-06-25 17:13:34 cg Exp $'
+ ^ '$Id: AbstractSourceCodeManager.st,v 1.313 2013-07-12 13:57:33 cg Exp $'
! !