--- a/Class.st Fri Dec 03 17:32:49 1999 +0100
+++ b/Class.st Fri Dec 03 18:23:51 1999 +0100
@@ -3234,7 +3234,7 @@
localSourceStreamFor:sourceFile
"return an open stream on a local sourcefile, nil if that is not available"
- |fileName info module dir fn package zar entry|
+ |fileName info module dir fn package packageDir zar entry|
"/
"/ old: look in 'source/<filename>'
@@ -3243,25 +3243,55 @@
"/
fileName := Smalltalk getSourceFileName:sourceFile.
fileName notNil ifTrue:[
- ^ fileName asFilename readStream.
+ ^ fileName asFilename readStream.
].
(package := self package) notNil ifTrue:[
- (package includes:$:) ifTrue:[
- package := package asString copyReplaceAll:$: with:$/
- ] ifFalse:[
- package := 'stx/' , package
- ].
- fileName := Smalltalk getSourceFileName:(package , '/' , sourceFile).
- fileName notNil ifTrue:[
- ^ fileName asFilename readStream.
- ].
- (package startsWith:'stx/') ifTrue:[
- fileName := Smalltalk getSourceFileName:((package copyFrom:5) , '/' , sourceFile).
- fileName notNil ifTrue:[
- ^ fileName asFilename readStream.
- ]
- ]
+ "/ newest sceme ...
+ packageDir := package copyReplaceAll:$: with:$/.
+ packageDir := Smalltalk getPackageFileName:packageDir.
+ packageDir notNil ifTrue:[
+ "/ present there ?
+ packageDir := packageDir asFilename.
+ (fn := packageDir construct:sourceFile) exists ifTrue:[
+ ^ fn readStream.
+ ].
+
+ "/ a source subdirectory ?
+ fn := (packageDir construct:'source') construct:sourceFile.
+ fn exists ifTrue:[
+ ^ fn readStream.
+ ].
+
+ "/ a zip-file ?
+ fn := (packageDir construct:'source.zip').
+ fn exists ifTrue:[
+ zar := ZipArchive oldFileNamed:fn.
+ zar notNil ifTrue:[
+ entry := zar extract:sourceFile.
+ entry notNil ifTrue:[
+ ^ entry asString readStream
+ ]
+ ]
+ ]
+ ].
+
+ "/ will vanish ...
+ (package includes:$:) ifTrue:[
+ package := package asString copyReplaceAll:$: with:$/
+ ] ifFalse:[
+ package := 'stx/' , package
+ ].
+ fileName := Smalltalk getSourceFileName:(package , '/' , sourceFile).
+ fileName notNil ifTrue:[
+ ^ fileName asFilename readStream.
+ ].
+ (package startsWith:'stx/') ifTrue:[
+ fileName := Smalltalk getSourceFileName:((package copyFrom:5) , '/' , sourceFile).
+ fileName notNil ifTrue:[
+ ^ fileName asFilename readStream.
+ ]
+ ]
].
"/
@@ -3270,45 +3300,45 @@
"/ 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.
- ].
-
- "/ 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
- ]
- ]
- ].
-
- "/ and also in source/source.zip ...
-
- fileName := Smalltalk getSourceFileName:'source.zip'.
- fileName notNil ifTrue:[
- zar := ZipArchive oldFileNamed:fileName.
- zar notNil ifTrue:[
- entry := zar extract:sourceFile.
- entry notNil ifTrue:[
- ^ entry asString 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
+ ]
+ ]
+ ].
+
+ "/ and also in source/source.zip ...
+
+ fileName := Smalltalk getSourceFileName:'source.zip'.
+ fileName notNil ifTrue:[
+ zar := ZipArchive oldFileNamed:fileName.
+ zar notNil ifTrue:[
+ entry := zar extract:sourceFile.
+ entry notNil ifTrue:[
+ ^ entry asString readStream
+ ]
+ ]
+ ].
+ ]
+ ]
].
^ nil
@@ -3999,5 +4029,5 @@
!Class class methodsFor:'documentation'!
version
- ^ '$Header: /cvs/stx/stx/libbasic/Class.st,v 1.358 1999-10-07 14:55:17 cg Exp $'
+ ^ '$Header: /cvs/stx/stx/libbasic/Class.st,v 1.359 1999-12-03 17:23:51 cg Exp $'
! !