Thank you Tobias, for this.
contrariwise to what I wrote earlier
#initKnownRenames
is not a hack but part of the regular conversion process.
'renamed' is an instance variable used in the #mapClass method you refer to.
The comment says ' allow for premapping'
mapClass: incoming "See if the old class named nm exists. If so, return it. If not, map it to a new class, and save the mapping in renamed. "
| cls oldVer sel nm |
self flag: #bobconv.
nm := renamed at: incoming ifAbsent: [incoming]. "allow pre-mapping around collisions"
-----------------
So the question is :
Can we handle the replacement
#MultiNewParagraph --> #NewParagraph
with pre-mapping or do we need something more.
On 10/9/17, Tobias Pape Das.Linux@gmx.de wrote:
On 09.10.2017, at 00:23, H. Hirzel hannes.hirzel@gmail.com wrote:
There are no senders of
#multiNewParagraphttfclpomsswfpp0
Yes but look here ("> " form me, "..." left out) SmartRefStream>>mapClass: incoming "..." | cls oldVer sel nm |
nm := renamed at: incoming ifAbsent: [incoming]. "allow pre-mapping around collisions" "> nm = 'MultiNewParagraph'" "..." oldVer := self versionSymbol: (structures at: nm). "> (structure at: nm) = #(0 text textStyle firstCharacterIndex container lines positionWhenComposed offsetToEnd maxRightX selectionStart selectionStop wantsColumnBreaks focused presentationText presentationLines)" "> oldNer = 'ttfclpomsswfpp0' " sel := nm asString. sel at: 1 put: (sel at: 1) asLowercase. "sel = multiNewParagraph sel := sel, oldVer. "i.e. #rectangleoc4" "sel = multiNewParagraphttfclpomsswfpp0" Symbol hasInterned: sel ifTrue: [:symb | (self class canUnderstand: sel asSymbol) ifTrue: [ reshaped ifNil: [reshaped := Dictionary new]. "> HERE IS THE SEND" cls := self perform: sel asSymbol]]. "This class will take responsibility" cls ifNil: [cls := self writeClassRenameMethod: sel was: nm fromInstVars: (structures at: nm). cls isString ifTrue: [cls := nil]]. cls ifNotNil: [renamed at: nm put: cls name]. ^ cls
Also look at all the methods in the *-conversion categories:
abstractStringx0 alansTextPlusMorphbosfcebbmsopssrsggshtt0 bookPageMorphbosfcepcbbfgcc0 clippingMorphbosfcep0 clippingMorphbosfcepc0 componentLikeModelbosfcebbmsop0 currentProjectRefactoringx0 dropShadowMorphbosfces0 layoutMorphbosfcepbbochvimol0 layoutMorphbosfcepcbbochvimol0 morphicEventtcbks0 morphicSoundEventtcbkss0 multiStringx0 multiSymbolx0 myMorphbosfce0 newMorphicEventts0 sMInstallationRegistryiim0 sMMaintainableObjectimcunsucromrf0 scrollControllermvslrrsmsms0 transparentColorrcc0 variableSpacerbosfcebb0 worldMorphbosfcebbfgccpmcpbttloiairfidcuwhavcdsll0
Best regards -Tobias
On 10/9/17, H. Hirzel hannes.hirzel@gmail.com wrote:
Tobias refers to
SmartRefStream>>multiNewParagraphttfclpomsswfpp0
^ NewParagraph
I wonder what
#multiNewParagraphttfclpomsswfpp0 is about.
Tobias, what do you mean by "shadow"
" So 'presentationText' and 'presentationLines' will shadow 'caretRect' and 'showCaret'... "
On 10/9/17, H. Hirzel hannes.hirzel@gmail.com wrote:
Screen shot
#initKnownRenames
present in a non-etoys 5.0 image.
On 10/9/17, H. Hirzel hannes.hirzel@gmail.com 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'...