Well, #initKnownRenamescame after my involvement, but there are several options available here:
- #initKnownRenames can specify a class to be substitued for another encountered in the input stream, whether the class in the stream exists in the image or not. So, you can just create something different if you like.
- #multiNewParagraphttfclpomsswfpp0, etc. (in SmartRefStream)) allows specific versions (all the ttfcl... stuff) to be substituted with something different.
- #convertToCurrentVersion:refStream: (in various classes) allows newly created instances to get their inst vars modified to current standards, like if 'name' used to be a String and now it's a Name, you might use this to fix old instances that still have Strings
So, if the issue is about fixing paragraphs or projects coming in from a ref stream, then #convertToCurrentVersion:refStream: will probably let you do what you want.
On 10/8/17 6:17 PM, H. Hirzel wrote:
On 10/8/17, Bob Arning arning315@comcast.net wrote:
#convertToCurrentVersion:refStream: might be used to fix up such problems
Seems to be the regular way to do this whereas
SmartRefStream>>initKnownRenames
looks more like a hack. However it is not etoys specific as it is present in Squeak 5.0 (screen shot)
#initKnownRenames is called in
SmartRefStream>>initShapeDicts
It has a flag #bobconv
Looks like unfinished business. Bob, what would you see as the way forward?
initShapeDicts "Initialize me. "
self flag: #bobconv.
"These must stay constant. When structures read in, then things can change." steady := {Array. Dictionary. Association. ByteString. SmallInteger. Character} asSet.
renamed ifNil: [ renamed := Dictionary new. "(old class name symbol -> new class name)" renamedConv := Dictionary new "(oldClassNameSymbol -> conversionSelectorInNewClass)" ]. self initKnownRenames
On 10/8/17 5:33 PM, Tobias Pape wrote:
So 'presentationText' and 'presentationLines' will shadow 'caretRect' and 'showCaret'...