diff -r e3718d979b80 -r 9c92ad3f3a05 Class.st --- 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/' @@ -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//package.zip - "/ containing an entry for - - 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//package.zip + "/ containing an entry for + + 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 $' ! !