[squeak-dev] The Trunk: Multilingual-pre.223.mcz

Levente Uzonyi leves at caesar.elte.hu
Fri Apr 21 12:05:51 UTC 2017


On Fri, 21 Apr 2017, Rein, Patrick wrote:

> The initialize methods are somewhat "necessary" as it turns out (after a discussion with Tobias Pape). 
>
> When loading a new class with Monticello, the initialize method is only executed if initialize is defined
> on the class (see MCMethodDefinition>>#postLoad). It is also only executed if the package actually 
> contains a MCMethodDefinition for an initialize method, but that is not relevant in this case (although
> that means that changing the initializeDecodeTable alone will not suffice in the future to update the tables).
>
> I have also found this thread: http://forum.world.st/class-initialization-and-class-side-variables-tp4822869p4822901.html
> which describes the same behavior.

Right, but the common pattern to solve this problem is to let the 
superclass drive the initialization by sending #allSubclassesDo: from 
#initialize.
That saves a bunch of methods (all the seemingly useless #initialize 
implementors in the subclasses), and the explicit class check in the 
superclass. Of course, it gets a bit more hairy when the class hierarchy 
has multiple levels with varying initialization requirements, but that's 
not the case here.

Levente

> ________________________________________
> From: Squeak-dev <squeak-dev-bounces at lists.squeakfoundation.org> on behalf of Levente Uzonyi <leves at caesar.elte.hu>
> Sent: Friday, April 21, 2017 12:22
> To: squeak-dev at lists.squeakfoundation.org
> Cc: packages at lists.squeakfoundation.org
> Subject: Re: [squeak-dev] The Trunk: Multilingual-pre.223.mcz
>
> On Fri, 21 Apr 2017, commits at source.squeak.org wrote:
>
>> Patrick Rein uploaded a new version of Multilingual to project The Trunk:
>> http://source.squeak.org/trunk/Multilingual-pre.223.mcz
>>
>> ==================== Summary ====================
>>
>> Name: Multilingual-pre.223
>> Author: pre
>> Time: 21 April 2017, 12:11:40.94494 pm
>> UUID: 184ff1ba-857b-8847-8de2-7bb0a2eb9f5a
>> Ancestors: Multilingual-pre.222
>>
>> Undoes the previous refactoring after a discussion with topa on class initializers... Also reformats decoding table source and adds a latin9 converter
>>
>> =============== Diff against Multilingual-pre.222 ===============
>>
>> Item was added:
>> + ----- Method: CP1250TextConverter class>>initialize (in category 'class initialization') -----
>> + initialize
>> +
>> +     super initialize!
>
> What's the point of these methods?
>
> Levente
>
>>
>> Item was added:
>> + ----- Method: CP1252TextConverter class>>initialize (in category 'class initialization') -----
>> + initialize
>> +
>> +     super initialize!
>>
>> Item was changed:
>>  ----- Method: CP1252TextConverter class>>initializeDecodeTable (in category 'class initialization') -----
>>  initializeDecodeTable
>>       decodeTable := (0 to: 127) , #(
>> +             16r20AC -1                      16r201A 16r0192 16r201E 16r2026 16r2020 16r2021
>> +             16r02C6 16r2030 16r0160 16r2039 16r0152 -1                      16r017D -1
>> +             -1                      16r2018 16r2019 16r201C 16r201D 16r2022 16r2013 16r2014
>> +             16r02DC 16r2122 16r0161 16r203A 16r0153 -1                      16r017E 16r0178
>> +             16r00A0 16r00A1 16r00A2 16r00A3 16r00A4 16r00A5 16r00A6 16r00A7
>> +             16r00A8 16r00A9 16r00AA 16r00AB 16r00AC 16r00AD 16r00AE 16r00AF
>> +             16r00B0 16r00B1 16r00B2 16r00B3 16r00B4 16r00B5 16r00B6 16r00B7
>> +             16r00B8 16r00B9 16r00BA 16r00BB 16r00BC 16r00BD 16r00BE 16r00BF
>> +             16r00C0 16r00C1 16r00C2 16r00C3 16r00C4 16r00C5 16r00C6 16r00C7
>> +             16r00C8 16r00C9 16r00CA 16r00CB 16r00CC 16r00CD 16r00CE 16r00CF
>> +             16r00D0 16r00D1 16r00D2 16r00D3 16r00D4 16r00D5 16r00D6 16r00D7
>> +             16r00D8 16r00D9 16r00DA 16r00DB 16r00DC 16r00DD 16r00DE 16r00DF
>> +             16r00E0 16r00E1 16r00E2 16r00E3 16r00E4 16r00E5 16r00E6 16r00E7
>> +             16r00E8 16r00E9 16r00EA 16r00EB 16r00EC 16r00ED 16r00EE 16r00EF
>> +             16r00F0 16r00F1 16r00F2 16r00F3 16r00F4 16r00F5 16r00F6 16r00F7
>> +             16r00F8 16r00F9 16r00FA 16r00FB 16r00FC 16r00FD 16r00FE 16r00FF ).!
>> - 16r20AC
>> - -1
>> - 16r201A
>> - 16r0192
>> - 16r201E
>> - 16r2026
>> - 16r2020
>> - 16r2021
>> - 16r02C6
>> - 16r2030
>> - 16r0160
>> - 16r2039
>> - 16r0152
>> - -1
>> - 16r017D
>> - -1
>> - -1
>> - 16r2018
>> - 16r2019
>> - 16r201C
>> - 16r201D
>> - 16r2022
>> - 16r2013
>> - 16r2014
>> - 16r02DC
>> - 16r2122
>> - 16r0161
>> - 16r203A
>> - 16r0153
>> - -1
>> - 16r017E
>> - 16r0178
>> - 16r00A0
>> - 16r00A1
>> - 16r00A2
>> - 16r00A3
>> - 16r00A4
>> - 16r00A5
>> - 16r00A6
>> - 16r00A7
>> - 16r00A8
>> - 16r00A9
>> - 16r00AA
>> - 16r00AB
>> - 16r00AC
>> - 16r00AD
>> - 16r00AE
>> - 16r00AF
>> - 16r00B0
>> - 16r00B1
>> - 16r00B2
>> - 16r00B3
>> - 16r00B4
>> - 16r00B5
>> - 16r00B6
>> - 16r00B7
>> - 16r00B8
>> - 16r00B9
>> - 16r00BA
>> - 16r00BB
>> - 16r00BC
>> - 16r00BD
>> - 16r00BE
>> - 16r00BF
>> - 16r00C0
>> - 16r00C1
>> - 16r00C2
>> - 16r00C3
>> - 16r00C4
>> - 16r00C5
>> - 16r00C6
>> - 16r00C7
>> - 16r00C8
>> - 16r00C9
>> - 16r00CA
>> - 16r00CB
>> - 16r00CC
>> - 16r00CD
>> - 16r00CE
>> - 16r00CF
>> - 16r00D0
>> - 16r00D1
>> - 16r00D2
>> - 16r00D3
>> - 16r00D4
>> - 16r00D5
>> - 16r00D6
>> - 16r00D7
>> - 16r00D8
>> - 16r00D9
>> - 16r00DA
>> - 16r00DB
>> - 16r00DC
>> - 16r00DD
>> - 16r00DE
>> - 16r00DF
>> - 16r00E0
>> - 16r00E1
>> - 16r00E2
>> - 16r00E3
>> - 16r00E4
>> - 16r00E5
>> - 16r00E6
>> - 16r00E7
>> - 16r00E8
>> - 16r00E9
>> - 16r00EA
>> - 16r00EB
>> - 16r00EC
>> - 16r00ED
>> - 16r00EE
>> - 16r00EF
>> - 16r00F0
>> - 16r00F1
>> - 16r00F2
>> - 16r00F3
>> - 16r00F4
>> - 16r00F5
>> - 16r00F6
>> - 16r00F7
>> - 16r00F8
>> - 16r00F9
>> - 16r00FA
>> - 16r00FB
>> - 16r00FC
>> - 16r00FD
>> - 16r00FE
>> - 16r00FF).!
>>
>> Item was added:
>> + ----- Method: CP1253TextConverter class>>initialize (in category 'class initialization') -----
>> + initialize
>> +
>> +     super initialize!
>>
>> Item was added:
>> + ByteTextConverter subclass: #CP1256TextConverter
>> +     instanceVariableNames: ''
>> +     classVariableNames: ''
>> +     poolDictionaries: ''
>> +     category: 'Multilingual-TextConversion'!
>> +
>> + !CP1256TextConverter commentStamp: 'pre 4/20/2017 14:49' prior: 0!
>> + Text converter for CP1256.  Windows code page used for Maghrib states.!
>>
>> Item was added:
>> + ----- Method: CP1256TextConverter class>>encodingNames (in category 'utilities') -----
>> + encodingNames
>> +
>> +     ^ #('cp-1256' 'windows-1256') copy
>> + !
>>
>> Item was added:
>> + ----- Method: CP1256TextConverter class>>initialize (in category 'class initialization') -----
>> + initialize
>> +
>> +     super initialize!
>>
>> Item was added:
>> + ----- Method: CP1256TextConverter class>>initializeDecodeTable (in category 'class initialization') -----
>> + initializeDecodeTable
>> +     decodeTable :=  (0 to: 127) , #(
>> +             16r20AC 16r067E 16r201A 16r0192 16r201E 16r2026 16r2020 16r2021
>> +             16r02C6 16r2030 16r0679 16r2039 16r0152 16r0686 16r0698 16r0688
>> +             16r06AF 16r2018 16r2019 16r201C 16r201D 16r2022 16r2013 16r2014
>> +             16r06A9 16r2122 16r0691 16r203A 16r0153 16r200C 16r200D 16r06BA
>> +             16r00A0 16r060C 16r00A2 16r00A3 16r00A4 16r00A5 16r00A6 16r00A7
>> +             16r00A8 16r00A9 16r06BE 16r00AB 16r00AC 16r00AD 16r00AE 16r00AF
>> +             16r00B0 16r00B1 16r00B2 16r00B3 16r00B4 16r00B5 16r00B6 16r00B7
>> +             16r00B8 16r00B9 16r061B 16r00BB 16r00BC 16r00BD 16r00BE 16r061F
>> +             16r06C1 16r0621 16r0622 16r0623 16r0624 16r0625 16r0626 16r0627
>> +             16r0628 16r0629 16r062A 16r062B 16r062C 16r062D 16r062E 16r062F
>> +             16r0630 16r0631 16r0632 16r0633 16r0634 16r0635 16r0636 16r00D7
>> +             16r0637 16r0638 16r0639 16r063A 16r0640 16r0641 16r0642 16r0643
>> +             16r00E0 16r0644 16r00E2 16r0645 16r0646 16r0647 16r0648 16r00E7
>> +             16r00E8 16r00E9 16r00EA 16r00EB 16r0649 16r064A 16r00EE 16r00EF
>> +             16r064B 16r064C 16r064D 16r064E 16r00F4 16r064F 16r0650 16r00F7
>> +             16r0651 16r00F9 16r0652 16r00FB 16r00FC 16r200E 16r200F 16r06D2).!
>>
>> Item was added:
>> + ----- Method: ISO88592TextConverter class>>initialize (in category 'class initialization') -----
>> + initialize
>> +
>> +     super initialize!
>>
>> Item was added:
>> + ----- Method: ISO88597TextConverter class>>initialize (in category 'class initialization') -----
>> + initialize
>> +
>> +     super initialize!
>>
>> Item was added:
>> + ----- Method: Latin1TextConverter class>>initialize (in category 'class initialization') -----
>> + initialize
>> +
>> +     super initialize!
>>
>> Item was added:
>> + Latin1TextConverter subclass: #Latin9TextConverter
>> +     instanceVariableNames: ''
>> +     classVariableNames: ''
>> +     poolDictionaries: ''
>> +     category: 'Multilingual-TextConversion'!
>> +
>> + !Latin9TextConverter commentStamp: 'pre 4/21/2017 11:40' prior: 0!
>> + Text converter for ISO 8859-15.  An international encoding also used in Western Europe.!
>>
>> Item was added:
>> + ----- Method: Latin9TextConverter class>>encodingNames (in category 'as yet unclassified') -----
>> + encodingNames
>> +
>> +     ^ #('latin-9' 'latin9' 'iso-8859-15') copy.
>> + !
>>
>> Item was added:
>> + ----- Method: Latin9TextConverter class>>initialize (in category 'as yet unclassified') -----
>> + initialize
>> +
>> +     self initializeDecodeTable; initializeEncodeTable; initializeLatin1MapAndEncodings!
>>
>> Item was added:
>> + ----- Method: Latin9TextConverter class>>initializeDecodeTable (in category 'as yet unclassified') -----
>> + initializeDecodeTable
>> +     super initializeDecodeTable.
>> +     decodeTable := (decodeTable copyFrom: 1 to: 128) , #(
>> +             16r0080 16r0081 16r0082 16r0083 16r0084 16r0085 16r0086 16r0087
>> +             16r0088 16r0089 16r008A 16r008B 16r008C 16r008D 16r008E 16r008F
>> +             16r0090 16r0091 16r0092 16r0093 16r0094 16r0095 16r0096 16r0097
>> +             16r0098 16r0099 16r009A 16r009B 16r009C 16r009D 16r009E 16r009F
>> +             16r00A0 16r00A1 16r00A2 16r00A3 16r20AC 16r00A5 16r0160 16r00A7
>> +             16r0161 16r00A9 16r00AA 16r00AB 16r00AC 16r00AD 16r00AE 16r00AF
>> +             16r00B0 16r00B1 16r00B2 16r00B3 16r017D 16r00B5 16r00B6 16r00B7
>> +             16r017E 16r00B9 16r00BA 16r00BB 16r0152 16r0153 16r0178 16r00BF
>> +             16r00C0 16r00C1 16r00C2 16r00C3 16r00C4 16r00C5 16r00C6 16r00C7
>> +             16r00C8 16r00C9 16r00CA 16r00CB 16r00CC 16r00CD 16r00CE 16r00CF
>> +             16r00D0 16r00D1 16r00D2 16r00D3 16r00D4 16r00D5 16r00D6 16r00D7
>> +             16r00D8 16r00D9 16r00DA 16r00DB 16r00DC 16r00DD 16r00DE 16r00DF
>> +             16r00E0 16r00E1 16r00E2 16r00E3 16r00E4 16r00E5 16r00E6 16r00E7
>> +             16r00E8 16r00E9 16r00EA 16r00EB 16r00EC 16r00ED 16r00EE 16r00EF
>> +             16r00F0 16r00F1 16r00F2 16r00F3 16r00F4 16r00F5 16r00F6 16r00F7
>> +             16r00F8 16r00F9 16r00FA 16r00FB 16r00FC 16r00FD 16r00FE 16r00FF).!
>>
>> Item was added:
>> + ----- Method: MacRomanTextConverter class>>initialize (in category 'class initialization') -----
>> + initialize
>> +
>> +     super initialize!
>>
>> Item was changed:
>>  ----- Method: ShiftJISTextConverter class>>encodingNames (in category 'utilities') -----
>>  encodingNames
>>
>> +     ^ #('shift-jis' 'shift_jis' 'sjis' 'cp932') copy
>> -     ^ #('shift-jis' 'shift_jis' 'sjis') copy
>>  !


More information about the Squeak-dev mailing list