Class.st
changeset 4752 84c4de5b3f64
parent 4744 c0a8ab60c9a3
child 4784 8616fba1e9e3
equal deleted inserted replaced
4751:174a92d4ba3f 4752:84c4de5b3f64
  3716 !
  3716 !
  3717 
  3717 
  3718 sourceStreamFor:source
  3718 sourceStreamFor:source
  3719     "return an open stream on a sourcefile, nil if that is not available"
  3719     "return an open stream on a sourcefile, nil if that is not available"
  3720 
  3720 
  3721     |owner fileName aStream mgr validated guessedFileName|
  3721     |owner fileName aStream mgr validated guessedFileName sep mod dir|
  3722 
  3722 
  3723     (owner := self owningClass) notNil ifTrue:[^ owner sourceStreamFor:source].
  3723     (owner := self owningClass) notNil ifTrue:[^ owner sourceStreamFor:source].
  3724     validated := false.
  3724     validated := false.
  3725 
  3725 
  3726     "/
  3726     "/
  3770         "/ the source for my class, and return an open stream on it. 
  3770         "/ the source for my class, and return an open stream on it. 
  3771         "/ if that one does not know about the source, look in
  3771         "/ if that one does not know about the source, look in
  3772         "/ standard places
  3772         "/ standard places
  3773 
  3773 
  3774         mgr notNil ifTrue:[
  3774         mgr notNil ifTrue:[
  3775             classFilename isNil ifTrue:[
  3775             sep := self package indexOfAny:'/\:'.
  3776                 classFilename := guessedFileName := (Smalltalk fileNameForClass:self) , '.st'.
  3776             sep ~~ 0 ifTrue:[
       
  3777                 mod := package copyTo:sep - 1.
       
  3778                 dir := package copyFrom:sep + 1.
       
  3779                 aStream := mgr streamForClass:nil fileName:source revision:nil directory:dir module:mod cache:true.
  3777             ].
  3780             ].
  3778             source asFilename baseName = classFilename asFilename baseName ifTrue:[
  3781             aStream isNil ifTrue:[
  3779                 aStream := mgr getSourceStreamFor:self.
  3782                 classFilename isNil ifTrue:[
  3780                 aStream notNil ifTrue:[
  3783                     classFilename := guessedFileName := (Smalltalk fileNameForClass:self) , '.st'.
  3781                     (self validateSourceStream:aStream) ifFalse:[
  3784                 ].
  3782                         ('Class [info]: repositories source for `' 
  3785                 source asFilename baseName = classFilename asFilename baseName ifTrue:[
  3783                          , (self isMeta ifTrue:[self soleInstance name]
  3786                     aStream := mgr getSourceStreamFor:self.
  3784                                         ifFalse:[name])
  3787                 ]
  3785                          , ''' is invalid.') infoPrintCR.
  3788             ].
  3786                         aStream close.
  3789             aStream notNil ifTrue:[
  3787                         aStream := nil
  3790                 (self validateSourceStream:aStream) ifFalse:[
  3788                     ] ifTrue:[
  3791                     ('Class [info]: repositories source for `' 
  3789                         validated := true.
  3792                      , (self isMeta ifTrue:[self soleInstance name]
  3790                     ].
  3793                                     ifFalse:[name])
       
  3794                      , ''' is invalid.') infoPrintCR.
       
  3795                     aStream close.
       
  3796                     aStream := nil
       
  3797                 ] ifTrue:[
       
  3798                     validated := true.
  3791                 ].
  3799                 ].
  3792             ].
  3800             ].
  3793 
  3801 
  3794             aStream isNil ifTrue:[
  3802             aStream isNil ifTrue:[
  3795                 aStream := self localSourceStreamFor:source.
  3803                 aStream := self localSourceStreamFor:source.
  3983 ! !
  3991 ! !
  3984 
  3992 
  3985 !Class class methodsFor:'documentation'!
  3993 !Class class methodsFor:'documentation'!
  3986 
  3994 
  3987 version
  3995 version
  3988     ^ '$Header: /cvs/stx/stx/libbasic/Class.st,v 1.355 1999-09-17 11:34:48 cg Exp $'
  3996     ^ '$Header: /cvs/stx/stx/libbasic/Class.st,v 1.356 1999-09-17 13:46:08 cg Exp $'
  3989 ! !
  3997 ! !