diff -r 6e43c118d860 -r 1f72f0fbdcf8 ClassInitializeChange.st --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/ClassInitializeChange.st Fri Mar 21 19:32:07 2014 +0100 @@ -0,0 +1,74 @@ +"{ Package: 'stx:libbasic3' }" + +ClassChange subclass:#ClassInitializeChange + instanceVariableNames:'' + classVariableNames:'' + poolDictionaries:'' + category:'System-Changes' +! + +!ClassInitializeChange class methodsFor:'documentation'! + +documentation +" + Change for class initialization chunk. Unlike DoItChange, + ClassInitializeChange handles namespaces and private classes + properly. + + [author:] + Jan Vrany + + [instance variables:] + + [class variables:] + + [see also:] + +" +! ! + +!ClassInitializeChange methodsFor:'accessing'! + +source + "return the source of the change" + + source isNil ifTrue:[ + ^ String streamContents:[ :s | + (nameSpaceName notNil and:[ nameSpaceName ~= 'Smalltalk' ]) ifTrue:[ + s nextPutAll: '"{ NameSpace: '; nextPutAll: nameSpaceName; nextPutAll: ' }"'; cr; cr. + s nextPutAll: self className; nextPutAll: ' initialize!!'; cr. + ]. + ] + ]. + ^ source + + "Created: / 21-03-2014 / 17:43:30 / Jan Vrany " +! ! + +!ClassInitializeChange methodsFor:'applying'! + +apply + "apply the change" + + | class | + + class := self changeClass. + class isNil ifTrue:[ + self error:('Class %1 does not (yet?) exists' bindWith: self fullClassName). + ^ self. + ]. + class initialize. + + "Created: / 21-03-2014 / 17:38:37 / Jan Vrany " +! ! + +!ClassInitializeChange class methodsFor:'documentation'! + +version + ^ '$Header: /cvs/stx/stx/libbasic3/ClassInitializeChange.st,v 1.1 2014-03-21 18:32:07 vrany Exp $' +! + +version_CVS + ^ '$Header: /cvs/stx/stx/libbasic3/ClassInitializeChange.st,v 1.1 2014-03-21 18:32:07 vrany Exp $' +! ! +