also look for a zipFile named <module>/<package>.zip
along the sourcePath, when searching a classes source.
--- a/Class.st Fri Apr 03 22:01:21 1998 +0200
+++ b/Class.st Mon Apr 06 10:37:43 1998 +0200
@@ -3191,7 +3191,7 @@
localSourceStreamFor:sourceFile
"return an open stream on a local sourcefile, nil if that is not available"
- |fileName info module dir fn package|
+ |fileName info module dir fn package zar entry|
"/
"/ old: look in 'source/<filename>'
@@ -3200,19 +3200,19 @@
"/
fileName := Smalltalk getSourceFileName:sourceFile.
fileName notNil ifTrue:[
- ^ fileName asFilename readStream.
+ ^ fileName asFilename readStream.
].
(package := self package) notNil ifTrue:[
- (package includes:$:) ifTrue:[
- package := package asString copy replaceAll:$: with:$/
- ] ifFalse:[
- package := 'stx/' , package
- ].
- fileName := Smalltalk getSourceFileName:(package , '/' , sourceFile).
- fileName notNil ifTrue:[
- ^ fileName asFilename readStream.
- ].
+ (package includes:$:) ifTrue:[
+ package := package asString copy replaceAll:$: with:$/
+ ] ifFalse:[
+ package := 'stx/' , package
+ ].
+ fileName := Smalltalk getSourceFileName:(package , '/' , sourceFile).
+ fileName notNil ifTrue:[
+ ^ fileName asFilename readStream.
+ ].
].
"/
@@ -3221,21 +3221,36 @@
"/ obsolete.
info := self packageSourceCodeInfo.
info notNil ifTrue:[
- module := info at:#module ifAbsent:nil.
- module notNil ifTrue:[
- dir := info at:#directory ifAbsent:nil.
- dir notNil ifTrue:[
- fn := (module asFilename construct:dir) construct:sourceFile.
- fileName := Smalltalk getSourceFileName:(fn name).
- fileName notNil ifTrue:[
- ^ fileName asFilename readStream.
- ].
- ]
- ]
+ module := info at:#module ifAbsent:nil.
+ module notNil ifTrue:[
+ dir := info at:#directory ifAbsent:nil.
+ dir notNil ifTrue:[
+ fn := (module asFilename construct:dir) construct:sourceFile.
+ fileName := Smalltalk getSourceFileName:(fn name).
+ fileName notNil ifTrue:[
+ ^ fileName asFilename readStream.
+ ].
+
+ "/ brand new: look for source/<module>/package.zip
+ "/ containing an entry for <filename>
+
+ fn := (module asFilename construct:dir) withSuffix:'zip'.
+ fileName := Smalltalk getSourceFileName:(fn name).
+ fileName notNil ifTrue:[
+ zar := ZipArchive oldFileNamed:fileName.
+ zar notNil ifTrue:[
+ entry := zar extract:sourceFile.
+ entry notNil ifTrue:[
+ ^ entry asString readStream
+ ]
+ ]
+ ].
+ ]
+ ]
].
^ nil
- "Modified: / 9.1.1998 / 15:02:46 / cg"
+ "Modified: / 4.4.1998 / 22:57:53 / cg"
!
packageSourceCodeInfo
@@ -3882,5 +3897,5 @@
!Class class methodsFor:'documentation'!
version
- ^ '$Header: /cvs/stx/stx/libbasic/Class.st,v 1.304 1998-03-13 15:31:41 cg Exp $'
+ ^ '$Header: /cvs/stx/stx/libbasic/Class.st,v 1.305 1998-04-06 08:37:43 cg Exp $'
! !