also look for a zipFile named <module>/<package>.zip
authorClaus Gittinger <cg@exept.de>
Mon, 06 Apr 1998 10:37:43 +0200
changeset 3365 32613a15ed21
parent 3364 626f42817289
child 3366 c253cfff1d44
also look for a zipFile named <module>/<package>.zip along the sourcePath, when searching a classes source.
Class.st
--- 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 $'
 ! !