Class.st
changeset 5073 9c92ad3f3a05
parent 4876 f71410c02257
child 5116 df218693a2dc
--- 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 $'
 ! !