CharacterEncoder.st
author ca
Mon, 15 Mar 2004 13:58:54 +0100
changeset 8194 7027457dbe4f
parent 8190 2c1bbf4a6a13
child 8210 cac1802b8603
permissions -rw-r--r--
*** empty log message ***
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
8048
293c8178c6eb utf8 errors
Claus Gittinger <cg@exept.de>
parents: 8033
diff changeset
     1
"
7899
7577df77ba95 character encodings - first attempt
Claus Gittinger <cg@exept.de>
parents: 7893
diff changeset
     2
 COPYRIGHT (c) 2004 by eXept Software AG
7932
ee233bf44df5 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7924
diff changeset
     3
	      All Rights Reserved
7899
7577df77ba95 character encodings - first attempt
Claus Gittinger <cg@exept.de>
parents: 7893
diff changeset
     4
7577df77ba95 character encodings - first attempt
Claus Gittinger <cg@exept.de>
parents: 7893
diff changeset
     5
 This software is furnished under a license and may be used
7577df77ba95 character encodings - first attempt
Claus Gittinger <cg@exept.de>
parents: 7893
diff changeset
     6
 only in accordance with the terms of that license and with the
7577df77ba95 character encodings - first attempt
Claus Gittinger <cg@exept.de>
parents: 7893
diff changeset
     7
 inclusion of the above copyright notice.   This software may not
7577df77ba95 character encodings - first attempt
Claus Gittinger <cg@exept.de>
parents: 7893
diff changeset
     8
 be provided or otherwise made available to, or used by, any
7577df77ba95 character encodings - first attempt
Claus Gittinger <cg@exept.de>
parents: 7893
diff changeset
     9
 other person.  No title to or ownership of the software is
7577df77ba95 character encodings - first attempt
Claus Gittinger <cg@exept.de>
parents: 7893
diff changeset
    10
 hereby transferred.
7577df77ba95 character encodings - first attempt
Claus Gittinger <cg@exept.de>
parents: 7893
diff changeset
    11
"
7577df77ba95 character encodings - first attempt
Claus Gittinger <cg@exept.de>
parents: 7893
diff changeset
    12
8114
05274a80fcc4 separated implementation into dynamically (lazy) loaded classes
Claus Gittinger <cg@exept.de>
parents: 8105
diff changeset
    13
"{ Package: 'stx:libbasic' }"
05274a80fcc4 separated implementation into dynamically (lazy) loaded classes
Claus Gittinger <cg@exept.de>
parents: 8105
diff changeset
    14
8118
efc99c0f68bc *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8114
diff changeset
    15
Object subclass:#CharacterEncoder
7914
86a3784b40dd *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7913
diff changeset
    16
	instanceVariableNames:''
8118
efc99c0f68bc *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8114
diff changeset
    17
	classVariableNames:'EncoderClassesByName EncodersByName CachedEncoders LastEncoder
8122
29670db31014 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8120
diff changeset
    18
		AccessLock NullEncoderInstance Jis7KanjiEscapeSequence
29670db31014 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8120
diff changeset
    19
		Jis7RomanEscapeSequence JisISO2022EscapeSequence
29670db31014 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8120
diff changeset
    20
		Jis7KanjiOldEscapeSequence'
7915
0b92b16542f6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7914
diff changeset
    21
	poolDictionaries:''
8114
05274a80fcc4 separated implementation into dynamically (lazy) loaded classes
Claus Gittinger <cg@exept.de>
parents: 8105
diff changeset
    22
	category:'Collections-Text-Encodings'
7969
1c252e9cf79c *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7967
diff changeset
    23
!
1c252e9cf79c *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7967
diff changeset
    24
7914
86a3784b40dd *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7913
diff changeset
    25
CharacterEncoder subclass:#CompoundEncoder
86a3784b40dd *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7913
diff changeset
    26
	instanceVariableNames:'decoder encoder'
86a3784b40dd *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7913
diff changeset
    27
	classVariableNames:''
86a3784b40dd *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7913
diff changeset
    28
	poolDictionaries:''
7915
0b92b16542f6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7914
diff changeset
    29
	privateIn:CharacterEncoder
0b92b16542f6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7914
diff changeset
    30
!
0b92b16542f6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7914
diff changeset
    31
7932
ee233bf44df5 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7924
diff changeset
    32
CharacterEncoder subclass:#DefaultEncoder
ee233bf44df5 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7924
diff changeset
    33
	instanceVariableNames:''
ee233bf44df5 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7924
diff changeset
    34
	classVariableNames:''
ee233bf44df5 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7924
diff changeset
    35
	poolDictionaries:''
ee233bf44df5 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7924
diff changeset
    36
	privateIn:CharacterEncoder
ee233bf44df5 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7924
diff changeset
    37
!
ee233bf44df5 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7924
diff changeset
    38
7914
86a3784b40dd *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7913
diff changeset
    39
CharacterEncoder subclass:#InverseEncoder
86a3784b40dd *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7913
diff changeset
    40
	instanceVariableNames:'decoder'
86a3784b40dd *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7913
diff changeset
    41
	classVariableNames:''
86a3784b40dd *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7913
diff changeset
    42
	poolDictionaries:''
7915
0b92b16542f6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7914
diff changeset
    43
	privateIn:CharacterEncoder
0b92b16542f6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7914
diff changeset
    44
!
0b92b16542f6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7914
diff changeset
    45
7899
7577df77ba95 character encodings - first attempt
Claus Gittinger <cg@exept.de>
parents: 7893
diff changeset
    46
CharacterEncoder subclass:#NullEncoder
7893
80df105ac17c checkin from browser
Claus Gittinger <cg@exept.de>
parents: 7892
diff changeset
    47
	instanceVariableNames:''
80df105ac17c checkin from browser
Claus Gittinger <cg@exept.de>
parents: 7892
diff changeset
    48
	classVariableNames:''
80df105ac17c checkin from browser
Claus Gittinger <cg@exept.de>
parents: 7892
diff changeset
    49
	poolDictionaries:''
7915
0b92b16542f6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7914
diff changeset
    50
	privateIn:CharacterEncoder
0b92b16542f6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7914
diff changeset
    51
!
0b92b16542f6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7914
diff changeset
    52
7892
149a145e871c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    53
CharacterEncoder subclass:#OtherEncoding
149a145e871c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    54
	instanceVariableNames:''
149a145e871c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    55
	classVariableNames:''
149a145e871c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    56
	poolDictionaries:''
7915
0b92b16542f6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7914
diff changeset
    57
	privateIn:CharacterEncoder
0b92b16542f6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7914
diff changeset
    58
!
0b92b16542f6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7914
diff changeset
    59
7919
92b61bef1b1a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7917
diff changeset
    60
CharacterEncoder subclass:#TwoStepEncoder
92b61bef1b1a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7917
diff changeset
    61
	instanceVariableNames:'encoder1 encoder2'
92b61bef1b1a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7917
diff changeset
    62
	classVariableNames:''
92b61bef1b1a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7917
diff changeset
    63
	poolDictionaries:''
92b61bef1b1a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7917
diff changeset
    64
	privateIn:CharacterEncoder
92b61bef1b1a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7917
diff changeset
    65
!
92b61bef1b1a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7917
diff changeset
    66
7893
80df105ac17c checkin from browser
Claus Gittinger <cg@exept.de>
parents: 7892
diff changeset
    67
!CharacterEncoder class methodsFor:'documentation'!
80df105ac17c checkin from browser
Claus Gittinger <cg@exept.de>
parents: 7892
diff changeset
    68
7899
7577df77ba95 character encodings - first attempt
Claus Gittinger <cg@exept.de>
parents: 7893
diff changeset
    69
copyright
7577df77ba95 character encodings - first attempt
Claus Gittinger <cg@exept.de>
parents: 7893
diff changeset
    70
"
7577df77ba95 character encodings - first attempt
Claus Gittinger <cg@exept.de>
parents: 7893
diff changeset
    71
 COPYRIGHT (c) 2004 by eXept Software AG
7932
ee233bf44df5 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7924
diff changeset
    72
	      All Rights Reserved
7899
7577df77ba95 character encodings - first attempt
Claus Gittinger <cg@exept.de>
parents: 7893
diff changeset
    73
7577df77ba95 character encodings - first attempt
Claus Gittinger <cg@exept.de>
parents: 7893
diff changeset
    74
 This software is furnished under a license and may be used
7577df77ba95 character encodings - first attempt
Claus Gittinger <cg@exept.de>
parents: 7893
diff changeset
    75
 only in accordance with the terms of that license and with the
7577df77ba95 character encodings - first attempt
Claus Gittinger <cg@exept.de>
parents: 7893
diff changeset
    76
 inclusion of the above copyright notice.   This software may not
7577df77ba95 character encodings - first attempt
Claus Gittinger <cg@exept.de>
parents: 7893
diff changeset
    77
 be provided or otherwise made available to, or used by, any
7577df77ba95 character encodings - first attempt
Claus Gittinger <cg@exept.de>
parents: 7893
diff changeset
    78
 other person.  No title to or ownership of the software is
7577df77ba95 character encodings - first attempt
Claus Gittinger <cg@exept.de>
parents: 7893
diff changeset
    79
 hereby transferred.
7577df77ba95 character encodings - first attempt
Claus Gittinger <cg@exept.de>
parents: 7893
diff changeset
    80
"
7577df77ba95 character encodings - first attempt
Claus Gittinger <cg@exept.de>
parents: 7893
diff changeset
    81
!
7577df77ba95 character encodings - first attempt
Claus Gittinger <cg@exept.de>
parents: 7893
diff changeset
    82
7893
80df105ac17c checkin from browser
Claus Gittinger <cg@exept.de>
parents: 7892
diff changeset
    83
documentation
80df105ac17c checkin from browser
Claus Gittinger <cg@exept.de>
parents: 7892
diff changeset
    84
"
7899
7577df77ba95 character encodings - first attempt
Claus Gittinger <cg@exept.de>
parents: 7893
diff changeset
    85
    unfinished code - please read howToAddMoreCoders.
7577df77ba95 character encodings - first attempt
Claus Gittinger <cg@exept.de>
parents: 7893
diff changeset
    86
7577df77ba95 character encodings - first attempt
Claus Gittinger <cg@exept.de>
parents: 7893
diff changeset
    87
    Character mappings are based on information in character maps found at either:
7932
ee233bf44df5 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7924
diff changeset
    88
	http://std.dkuug.dk/i18n/charmaps
7899
7577df77ba95 character encodings - first attempt
Claus Gittinger <cg@exept.de>
parents: 7893
diff changeset
    89
    or:
7932
ee233bf44df5 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7924
diff changeset
    90
	http://www.unicode.org/Public/MAPPINGS
7899
7577df77ba95 character encodings - first attempt
Claus Gittinger <cg@exept.de>
parents: 7893
diff changeset
    91
7577df77ba95 character encodings - first attempt
Claus Gittinger <cg@exept.de>
parents: 7893
diff changeset
    92
    No Warranty.
7577df77ba95 character encodings - first attempt
Claus Gittinger <cg@exept.de>
parents: 7893
diff changeset
    93
"
7577df77ba95 character encodings - first attempt
Claus Gittinger <cg@exept.de>
parents: 7893
diff changeset
    94
!
7577df77ba95 character encodings - first attempt
Claus Gittinger <cg@exept.de>
parents: 7893
diff changeset
    95
7577df77ba95 character encodings - first attempt
Claus Gittinger <cg@exept.de>
parents: 7893
diff changeset
    96
examples
7577df77ba95 character encodings - first attempt
Claus Gittinger <cg@exept.de>
parents: 7893
diff changeset
    97
"
7577df77ba95 character encodings - first attempt
Claus Gittinger <cg@exept.de>
parents: 7893
diff changeset
    98
    |s1 s2|
7577df77ba95 character encodings - first attempt
Claus Gittinger <cg@exept.de>
parents: 7893
diff changeset
    99
7577df77ba95 character encodings - first attempt
Claus Gittinger <cg@exept.de>
parents: 7893
diff changeset
   100
    s1 := 'hello'.
7577df77ba95 character encodings - first attempt
Claus Gittinger <cg@exept.de>
parents: 7893
diff changeset
   101
    s2 := CharacterEncoder encode:s1 from:#'iso8859-1' into:#'unicode'.
7577df77ba95 character encodings - first attempt
Claus Gittinger <cg@exept.de>
parents: 7893
diff changeset
   102
    s2
7577df77ba95 character encodings - first attempt
Claus Gittinger <cg@exept.de>
parents: 7893
diff changeset
   103
7577df77ba95 character encodings - first attempt
Claus Gittinger <cg@exept.de>
parents: 7893
diff changeset
   104
7577df77ba95 character encodings - first attempt
Claus Gittinger <cg@exept.de>
parents: 7893
diff changeset
   105
    |s1 s2|
7577df77ba95 character encodings - first attempt
Claus Gittinger <cg@exept.de>
parents: 7893
diff changeset
   106
7577df77ba95 character encodings - first attempt
Claus Gittinger <cg@exept.de>
parents: 7893
diff changeset
   107
    s1 := 'hello'.
7577df77ba95 character encodings - first attempt
Claus Gittinger <cg@exept.de>
parents: 7893
diff changeset
   108
    s2 := CharacterEncoder encode:s1 from:#'iso8859-1' into:#'iso8859-7'.
7577df77ba95 character encodings - first attempt
Claus Gittinger <cg@exept.de>
parents: 7893
diff changeset
   109
    s2
7577df77ba95 character encodings - first attempt
Claus Gittinger <cg@exept.de>
parents: 7893
diff changeset
   110
"
7577df77ba95 character encodings - first attempt
Claus Gittinger <cg@exept.de>
parents: 7893
diff changeset
   111
!
7577df77ba95 character encodings - first attempt
Claus Gittinger <cg@exept.de>
parents: 7893
diff changeset
   112
7577df77ba95 character encodings - first attempt
Claus Gittinger <cg@exept.de>
parents: 7893
diff changeset
   113
howToAddMoreCoders
7577df77ba95 character encodings - first attempt
Claus Gittinger <cg@exept.de>
parents: 7893
diff changeset
   114
"
7971
357e53496acc *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7969
diff changeset
   115
    Coders can be hand-written or automagically generated via  a mapping table.
7932
ee233bf44df5 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7924
diff changeset
   116
    Examples for hand-written coders are UTF8_to_ISO10464 or JIS0208_to_JIS7.
ee233bf44df5 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7924
diff changeset
   117
7899
7577df77ba95 character encodings - first attempt
Claus Gittinger <cg@exept.de>
parents: 7893
diff changeset
   118
    The table driven encode/decode methods can be generated from a character mapping document
7577df77ba95 character encodings - first attempt
Claus Gittinger <cg@exept.de>
parents: 7893
diff changeset
   119
    as found on the unicode consortium host
8136
30b63b09b99a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8135
diff changeset
   120
	(for example: 'http://www.unicode.org/Public/MAPPINGS/ISO8859/8859-1.TXT')
7899
7577df77ba95 character encodings - first attempt
Claus Gittinger <cg@exept.de>
parents: 7893
diff changeset
   121
7577df77ba95 character encodings - first attempt
Claus Gittinger <cg@exept.de>
parents: 7893
diff changeset
   122
    or from the i18n character maps:
8136
30b63b09b99a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8135
diff changeset
   123
	(for example: 'http://std.dkuug.dk/i18n/charmaps/ISO-8859-1
7899
7577df77ba95 character encodings - first attempt
Claus Gittinger <cg@exept.de>
parents: 7893
diff changeset
   124
7577df77ba95 character encodings - first attempt
Claus Gittinger <cg@exept.de>
parents: 7893
diff changeset
   125
    In order to add another coder (for example: for finish EBCDIC or ms-codePage 278),
7577df77ba95 character encodings - first attempt
Claus Gittinger <cg@exept.de>
parents: 7893
diff changeset
   126
    perform the following steps:
8136
30b63b09b99a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8135
diff changeset
   127
	- create a private subclass of CharacterEncoder named (for example) CP267.
8114
05274a80fcc4 separated implementation into dynamically (lazy) loaded classes
Claus Gittinger <cg@exept.de>
parents: 8105
diff changeset
   128
8136
30b63b09b99a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8135
diff changeset
   129
	- create a public subclass of CharacterEncoderImplementations::CharacterEncoderImplementation named (for example) CharacterEncoderImplementations::CP267.
7899
7577df77ba95 character encodings - first attempt
Claus Gittinger <cg@exept.de>
parents: 7893
diff changeset
   130
8136
30b63b09b99a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8135
diff changeset
   131
	- define the mappingURL1_relativeName (if the table is found on 'www.unicode.org')
30b63b09b99a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8135
diff changeset
   132
	  or the mappingURL2_relativeName (if it is found on 'std.dkuug.dk') method, which
30b63b09b99a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8135
diff changeset
   133
	  should return the name of the tables file, relative to the top directory there
30b63b09b99a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8135
diff changeset
   134
	  (which is '.../Public/MAPPINGS' on www.unicode.org and '.../i18n/charmaops' on 'std.dkuug.dk'.
7899
7577df77ba95 character encodings - first attempt
Claus Gittinger <cg@exept.de>
parents: 7893
diff changeset
   135
8136
30b63b09b99a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8135
diff changeset
   136
	  In this example, the table from 'std.dkuug.dk' is used, and named 'EBCDIC-CP-FI' there.
7899
7577df77ba95 character encodings - first attempt
Claus Gittinger <cg@exept.de>
parents: 7893
diff changeset
   137
8136
30b63b09b99a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8135
diff changeset
   138
	- generate code by evaluating:
30b63b09b99a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8135
diff changeset
   139
	    CharacterEncoder::CP267 generateCode
7899
7577df77ba95 character encodings - first attempt
Claus Gittinger <cg@exept.de>
parents: 7893
diff changeset
   140
7577df77ba95 character encodings - first attempt
Claus Gittinger <cg@exept.de>
parents: 7893
diff changeset
   141
    Thats all !!
7577df77ba95 character encodings - first attempt
Claus Gittinger <cg@exept.de>
parents: 7893
diff changeset
   142
7909
a045c719fca2 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7904
diff changeset
   143
a045c719fca2 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7904
diff changeset
   144
    The existing code was generated by:
a045c719fca2 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7904
diff changeset
   145
8136
30b63b09b99a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8135
diff changeset
   146
	CharacterEncoder::SingleByteEncoder subclassesDo:[:cls | Transcript showCR:cls name. cls flushCode; generateCode ]
30b63b09b99a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8135
diff changeset
   147
	CharacterEncoder::SingleByteEncoder subclassesDo:[:cls | cls allSubclassesDo:[:sub | Transcript showCR:sub name. sub flushCode; generateSubclassCode]]
7909
a045c719fca2 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7904
diff changeset
   148
a045c719fca2 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7904
diff changeset
   149
    or individually:
8136
30b63b09b99a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8135
diff changeset
   150
	CharacterEncoder::ASCII flushCode; generateCode.
30b63b09b99a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8135
diff changeset
   151
	CharacterEncoder::ISO8859_1 flushCode; generateCode.
30b63b09b99a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8135
diff changeset
   152
	CharacterEncoder::ISO8859_2 flushCode; generateCode.
30b63b09b99a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8135
diff changeset
   153
	CharacterEncoder::ISO8859_3 flushCode; generateCode.
30b63b09b99a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8135
diff changeset
   154
	CharacterEncoder::ISO8859_4 flushCode; generateCode.
30b63b09b99a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8135
diff changeset
   155
	CharacterEncoder::ISO8859_5 flushCode; generateCode.
30b63b09b99a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8135
diff changeset
   156
	CharacterEncoder::ISO8859_6 flushCode; generateCode.
30b63b09b99a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8135
diff changeset
   157
	CharacterEncoder::ISO8859_7 flushCode; generateCode.
30b63b09b99a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8135
diff changeset
   158
	CharacterEncoder::ISO8859_8 flushCode; generateCode.
30b63b09b99a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8135
diff changeset
   159
	CharacterEncoder::ISO8859_9 flushCode; generateCode.
30b63b09b99a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8135
diff changeset
   160
	CharacterEncoder::ISO8859_10 flushCode; generateCode.
30b63b09b99a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8135
diff changeset
   161
	CharacterEncoder::ISO8859_11 flushCode; generateCode.
30b63b09b99a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8135
diff changeset
   162
	CharacterEncoder::ISO8859_13 flushCode; generateCode.
30b63b09b99a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8135
diff changeset
   163
	CharacterEncoder::ISO8859_14 flushCode; generateCode.
30b63b09b99a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8135
diff changeset
   164
	CharacterEncoder::ISO8859_15 flushCode; generateCode.
30b63b09b99a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8135
diff changeset
   165
	CharacterEncoder::ISO8859_16 flushCode; generateCode.
30b63b09b99a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8135
diff changeset
   166
	CharacterEncoder::KOI8_R flushCode; generateCode.
30b63b09b99a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8135
diff changeset
   167
	CharacterEncoder::GSM0338 flushCode; generateCode.
7909
a045c719fca2 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7904
diff changeset
   168
8136
30b63b09b99a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8135
diff changeset
   169
	CharacterEncoder::KOI8_U flushCode; generateSubclassCode.
7912
fbbb59645576 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7909
diff changeset
   170
8136
30b63b09b99a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8135
diff changeset
   171
	CharacterEncoder::JIS0208 flushCode; generateCode.
7899
7577df77ba95 character encodings - first attempt
Claus Gittinger <cg@exept.de>
parents: 7893
diff changeset
   172
"
7577df77ba95 character encodings - first attempt
Claus Gittinger <cg@exept.de>
parents: 7893
diff changeset
   173
! !
7577df77ba95 character encodings - first attempt
Claus Gittinger <cg@exept.de>
parents: 7893
diff changeset
   174
7971
357e53496acc *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7969
diff changeset
   175
!CharacterEncoder class methodsFor:'instance creation'!
357e53496acc *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7969
diff changeset
   176
357e53496acc *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7969
diff changeset
   177
encoderFor:encodingNameSymbol
357e53496acc *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7969
diff changeset
   178
    "given the name of an encoding, return an encoder-instance which can map these from/into unicode."
357e53496acc *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7969
diff changeset
   179
357e53496acc *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7969
diff changeset
   180
    ^ self
8156
bd5169c15b31 *** empty log message ***
ca
parents: 8155
diff changeset
   181
        encoderFor:encodingNameSymbol 
bd5169c15b31 *** empty log message ***
ca
parents: 8155
diff changeset
   182
        ifAbsent:[
bd5169c15b31 *** empty log message ***
ca
parents: 8155
diff changeset
   183
            "/ proceed to ignore this error in the future.    
bd5169c15b31 *** empty log message ***
ca
parents: 8155
diff changeset
   184
            self error:'no encoder for ' , encodingNameSymbol mayProceed:true.
bd5169c15b31 *** empty log message ***
ca
parents: 8155
diff changeset
   185
            (EncoderClassesByName at:#'unicode') at:encodingNameSymbol put:NullEncoder.    
bd5169c15b31 *** empty log message ***
ca
parents: 8155
diff changeset
   186
            NullEncoderInstance
bd5169c15b31 *** empty log message ***
ca
parents: 8155
diff changeset
   187
        ]
7971
357e53496acc *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7969
diff changeset
   188
357e53496acc *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7969
diff changeset
   189
    "
357e53496acc *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7969
diff changeset
   190
     CharacterEncoder encoderFor:#'latin1'       
357e53496acc *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7969
diff changeset
   191
     self encoderFor:#'arabic'       
357e53496acc *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7969
diff changeset
   192
     self encoderFor:#'ms-arabic'       
357e53496acc *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7969
diff changeset
   193
     self encoderFor:#'iso8859-5'    
357e53496acc *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7969
diff changeset
   194
     self encoderFor:#'koi8-r'      
357e53496acc *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7969
diff changeset
   195
     self encoderFor:#'koi8-u'      
357e53496acc *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7969
diff changeset
   196
     self encoderFor:#'jis0208'      
357e53496acc *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7969
diff changeset
   197
     self encoderFor:#'jis7'      
8087
0a2ee76bcf55 last version before separating into extra classes
Claus Gittinger <cg@exept.de>
parents: 8062
diff changeset
   198
     self encoderFor:#'utf8'      
7971
357e53496acc *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7969
diff changeset
   199
    "
357e53496acc *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7969
diff changeset
   200
!
357e53496acc *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7969
diff changeset
   201
8168
8f8da8bb046d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8156
diff changeset
   202
encoderFor:encodingNameSymbolArg ifAbsent:exceptionValue
7971
357e53496acc *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7969
diff changeset
   203
    "given the name of an encoding, return an encoder-instance which can map these from/into unicode."
357e53496acc *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7969
diff changeset
   204
8168
8f8da8bb046d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8156
diff changeset
   205
    |encodingNameSymbol enc clsName cls lcName name unicodeEncoders unicodeEncoderClasses|
8118
efc99c0f68bc *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8114
diff changeset
   206
8168
8f8da8bb046d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8156
diff changeset
   207
    encodingNameSymbol := encodingNameSymbolArg.
8118
efc99c0f68bc *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8114
diff changeset
   208
    encodingNameSymbol isNil ifTrue:[ ^ NullEncoderInstance].
7972
91aa73f89491 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7971
diff changeset
   209
8168
8f8da8bb046d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8156
diff changeset
   210
    encodingNameSymbol == #'iso10646-1' ifTrue:[ encodingNameSymbol :=  #'unicode'].
8f8da8bb046d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8156
diff changeset
   211
    encodingNameSymbol isSymbol ifFalse:[self halt:'symbol argument expected'. encodingNameSymbol := encodingNameSymbol asSymbol].
8f8da8bb046d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8156
diff changeset
   212
8118
efc99c0f68bc *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8114
diff changeset
   213
    lcName := encodingNameSymbol asLowercase.
efc99c0f68bc *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8114
diff changeset
   214
    name := lcName asSymbolIfInterned.
efc99c0f68bc *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8114
diff changeset
   215
    name isNil ifTrue:[name := lcName].
8052
4ca96b117b21 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 8048
diff changeset
   216
8118
efc99c0f68bc *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8114
diff changeset
   217
    name includesMatchCharacters ifTrue:[
8155
5c67868ddc38 *** empty log message ***
ca
parents: 8154
diff changeset
   218
        unicodeEncoders := EncodersByName at:#unicode ifAbsent:nil.
5c67868ddc38 *** empty log message ***
ca
parents: 8154
diff changeset
   219
        unicodeEncoders notNil ifTrue:[
5c67868ddc38 *** empty log message ***
ca
parents: 8154
diff changeset
   220
            unicodeEncoders keysAndValuesDo:[:eachEncodingAlias :eachEncoderInstance |
5c67868ddc38 *** empty log message ***
ca
parents: 8154
diff changeset
   221
                (name matches:eachEncodingAlias) ifTrue:[
5c67868ddc38 *** empty log message ***
ca
parents: 8154
diff changeset
   222
                    ^ eachEncoderInstance.
5c67868ddc38 *** empty log message ***
ca
parents: 8154
diff changeset
   223
                ].
5c67868ddc38 *** empty log message ***
ca
parents: 8154
diff changeset
   224
            ].
5c67868ddc38 *** empty log message ***
ca
parents: 8154
diff changeset
   225
        ].
8118
efc99c0f68bc *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8114
diff changeset
   226
8155
5c67868ddc38 *** empty log message ***
ca
parents: 8154
diff changeset
   227
        unicodeEncoderClasses := EncoderClassesByName at:#unicode.
5c67868ddc38 *** empty log message ***
ca
parents: 8154
diff changeset
   228
        unicodeEncoderClasses notNil ifTrue:[
5c67868ddc38 *** empty log message ***
ca
parents: 8154
diff changeset
   229
            unicodeEncoderClasses keysAndValuesDo:[:eachEncodingAlias :eachEncoderClassOrName |
5c67868ddc38 *** empty log message ***
ca
parents: 8154
diff changeset
   230
                (name matches:eachEncodingAlias) ifTrue:[
5c67868ddc38 *** empty log message ***
ca
parents: 8154
diff changeset
   231
                    eachEncoderClassOrName isBehavior ifTrue:[
8194
7027457dbe4f *** empty log message ***
ca
parents: 8190
diff changeset
   232
                        cls := eachEncoderClassOrName
7027457dbe4f *** empty log message ***
ca
parents: 8190
diff changeset
   233
                    ] ifFalse:[
7027457dbe4f *** empty log message ***
ca
parents: 8190
diff changeset
   234
                        cls := CharacterEncoderImplementations at:eachEncoderClassOrName.
8155
5c67868ddc38 *** empty log message ***
ca
parents: 8154
diff changeset
   235
                    ].
5c67868ddc38 *** empty log message ***
ca
parents: 8154
diff changeset
   236
                    cls notNil ifTrue:[
5c67868ddc38 *** empty log message ***
ca
parents: 8154
diff changeset
   237
                        ^ cls new.
5c67868ddc38 *** empty log message ***
ca
parents: 8154
diff changeset
   238
                    ]
5c67868ddc38 *** empty log message ***
ca
parents: 8154
diff changeset
   239
                ].
5c67868ddc38 *** empty log message ***
ca
parents: 8154
diff changeset
   240
            ].
5c67868ddc38 *** empty log message ***
ca
parents: 8154
diff changeset
   241
        ].
5c67868ddc38 *** empty log message ***
ca
parents: 8154
diff changeset
   242
        ^ exceptionValue value
7972
91aa73f89491 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7971
diff changeset
   243
    ].
7971
357e53496acc *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7969
diff changeset
   244
8118
efc99c0f68bc *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8114
diff changeset
   245
    AccessLock critical:[
8155
5c67868ddc38 *** empty log message ***
ca
parents: 8154
diff changeset
   246
        unicodeEncoders := EncodersByName at:#unicode ifAbsent:nil.
5c67868ddc38 *** empty log message ***
ca
parents: 8154
diff changeset
   247
        unicodeEncoders isNil ifTrue:[
5c67868ddc38 *** empty log message ***
ca
parents: 8154
diff changeset
   248
            EncodersByName at:#unicode put:(unicodeEncoders := Dictionary new).
5c67868ddc38 *** empty log message ***
ca
parents: 8154
diff changeset
   249
        ].
5c67868ddc38 *** empty log message ***
ca
parents: 8154
diff changeset
   250
        enc := unicodeEncoders at:name ifAbsent:nil.
7971
357e53496acc *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7969
diff changeset
   251
8155
5c67868ddc38 *** empty log message ***
ca
parents: 8154
diff changeset
   252
        enc isNil ifTrue:[
5c67868ddc38 *** empty log message ***
ca
parents: 8154
diff changeset
   253
            unicodeEncoderClasses := EncoderClassesByName at:#unicode ifAbsent:nil.
5c67868ddc38 *** empty log message ***
ca
parents: 8154
diff changeset
   254
            unicodeEncoderClasses isNil ifTrue:[
5c67868ddc38 *** empty log message ***
ca
parents: 8154
diff changeset
   255
                EncoderClassesByName at:#unicode put:(unicodeEncoderClasses := Dictionary new).
5c67868ddc38 *** empty log message ***
ca
parents: 8154
diff changeset
   256
            ].
5c67868ddc38 *** empty log message ***
ca
parents: 8154
diff changeset
   257
            clsName := unicodeEncoderClasses at:name ifAbsent:nil.
5c67868ddc38 *** empty log message ***
ca
parents: 8154
diff changeset
   258
            clsName notNil ifTrue:[
5c67868ddc38 *** empty log message ***
ca
parents: 8154
diff changeset
   259
                clsName isBehavior ifTrue:[
8194
7027457dbe4f *** empty log message ***
ca
parents: 8190
diff changeset
   260
                    cls := clsName
7027457dbe4f *** empty log message ***
ca
parents: 8190
diff changeset
   261
                ] ifFalse:[
7027457dbe4f *** empty log message ***
ca
parents: 8190
diff changeset
   262
                    cls := CharacterEncoderImplementations at:clsName.
8155
5c67868ddc38 *** empty log message ***
ca
parents: 8154
diff changeset
   263
                ].
5c67868ddc38 *** empty log message ***
ca
parents: 8154
diff changeset
   264
                cls notNil ifTrue:[
5c67868ddc38 *** empty log message ***
ca
parents: 8154
diff changeset
   265
                    enc := cls new.
5c67868ddc38 *** empty log message ***
ca
parents: 8154
diff changeset
   266
                    unicodeEncoders at:name put:enc.
5c67868ddc38 *** empty log message ***
ca
parents: 8154
diff changeset
   267
                ]
5c67868ddc38 *** empty log message ***
ca
parents: 8154
diff changeset
   268
            ].
5c67868ddc38 *** empty log message ***
ca
parents: 8154
diff changeset
   269
        ].
7973
6dea491d56f7 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7972
diff changeset
   270
    ].
8118
efc99c0f68bc *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8114
diff changeset
   271
    enc notNil ifTrue:[
8155
5c67868ddc38 *** empty log message ***
ca
parents: 8154
diff changeset
   272
        ^ enc 
7973
6dea491d56f7 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7972
diff changeset
   273
    ].
7971
357e53496acc *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7969
diff changeset
   274
8118
efc99c0f68bc *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8114
diff changeset
   275
    "/ no direct encoder from unicode->name
efc99c0f68bc *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8114
diff changeset
   276
    "/ search for unicode->any and: any->name
efc99c0f68bc *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8114
diff changeset
   277
    unicodeEncoderClasses := EncoderClassesByName at:#unicode ifAbsent:nil.
efc99c0f68bc *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8114
diff changeset
   278
    unicodeEncoderClasses keysAndValuesDo:[:eachEncodingAlias :eachEncoderClass |
8155
5c67868ddc38 *** empty log message ***
ca
parents: 8154
diff changeset
   279
        |dict2 enc1 enc2|
8118
efc99c0f68bc *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8114
diff changeset
   280
8155
5c67868ddc38 *** empty log message ***
ca
parents: 8154
diff changeset
   281
        dict2 := EncoderClassesByName at:eachEncodingAlias ifAbsent:nil.
5c67868ddc38 *** empty log message ***
ca
parents: 8154
diff changeset
   282
        dict2 notNil ifTrue:[
5c67868ddc38 *** empty log message ***
ca
parents: 8154
diff changeset
   283
            clsName := dict2 at:name ifAbsent:nil.
5c67868ddc38 *** empty log message ***
ca
parents: 8154
diff changeset
   284
            clsName notNil ifTrue:[
5c67868ddc38 *** empty log message ***
ca
parents: 8154
diff changeset
   285
                clsName isBehavior ifTrue:[
8194
7027457dbe4f *** empty log message ***
ca
parents: 8190
diff changeset
   286
                    cls := clsName
8155
5c67868ddc38 *** empty log message ***
ca
parents: 8154
diff changeset
   287
                ] ifFalse:[
5c67868ddc38 *** empty log message ***
ca
parents: 8154
diff changeset
   288
                    cls := CharacterEncoderImplementations at:clsName.
5c67868ddc38 *** empty log message ***
ca
parents: 8154
diff changeset
   289
                ].
5c67868ddc38 *** empty log message ***
ca
parents: 8154
diff changeset
   290
                cls notNil ifTrue:[
5c67868ddc38 *** empty log message ***
ca
parents: 8154
diff changeset
   291
                    enc2 := cls new.
5c67868ddc38 *** empty log message ***
ca
parents: 8154
diff changeset
   292
                    enc1 := self encoderFor:eachEncodingAlias.
5c67868ddc38 *** empty log message ***
ca
parents: 8154
diff changeset
   293
                    (enc1 notNil and:[enc2 notNil]) ifTrue:[
5c67868ddc38 *** empty log message ***
ca
parents: 8154
diff changeset
   294
                        enc := TwoStepEncoder new encoder1:enc1 encoder2:enc2.
5c67868ddc38 *** empty log message ***
ca
parents: 8154
diff changeset
   295
                        AccessLock critical:[
5c67868ddc38 *** empty log message ***
ca
parents: 8154
diff changeset
   296
                            unicodeEncoders at:name put:enc.    
5c67868ddc38 *** empty log message ***
ca
parents: 8154
diff changeset
   297
                        ].
5c67868ddc38 *** empty log message ***
ca
parents: 8154
diff changeset
   298
                        ^ enc.
5c67868ddc38 *** empty log message ***
ca
parents: 8154
diff changeset
   299
                    ]
5c67868ddc38 *** empty log message ***
ca
parents: 8154
diff changeset
   300
                ]
5c67868ddc38 *** empty log message ***
ca
parents: 8154
diff changeset
   301
            ]
5c67868ddc38 *** empty log message ***
ca
parents: 8154
diff changeset
   302
        ].
7971
357e53496acc *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7969
diff changeset
   303
    ].
357e53496acc *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7969
diff changeset
   304
8194
7027457dbe4f *** empty log message ***
ca
parents: 8190
diff changeset
   305
    EncoderClassesByName keysAndValuesDo:[:encoding1 :dict1 |
7027457dbe4f *** empty log message ***
ca
parents: 8190
diff changeset
   306
        dict1 keysAndValuesDo:[:encoding2 :clsName1|
7027457dbe4f *** empty log message ***
ca
parents: 8190
diff changeset
   307
            |clsName2 cls1 cls2 dict2 enc1 enc2|
7027457dbe4f *** empty log message ***
ca
parents: 8190
diff changeset
   308
7027457dbe4f *** empty log message ***
ca
parents: 8190
diff changeset
   309
            encoding2 = encodingNameSymbol ifTrue:[
7027457dbe4f *** empty log message ***
ca
parents: 8190
diff changeset
   310
                dict2 := EncoderClassesByName at:#unicode.
7027457dbe4f *** empty log message ***
ca
parents: 8190
diff changeset
   311
                clsName2 := dict2 at:encoding1 ifAbsent:nil.
7027457dbe4f *** empty log message ***
ca
parents: 8190
diff changeset
   312
encodingNameSymbol = 'sjis' ifTrue:[ self halt ].
7027457dbe4f *** empty log message ***
ca
parents: 8190
diff changeset
   313
                clsName2 notNil ifTrue:[
7027457dbe4f *** empty log message ***
ca
parents: 8190
diff changeset
   314
                    clsName1 isBehavior ifTrue:[
7027457dbe4f *** empty log message ***
ca
parents: 8190
diff changeset
   315
                        cls1 := clsName1
7027457dbe4f *** empty log message ***
ca
parents: 8190
diff changeset
   316
                    ] ifFalse:[
7027457dbe4f *** empty log message ***
ca
parents: 8190
diff changeset
   317
                        cls1 := CharacterEncoderImplementations at:clsName1.
7027457dbe4f *** empty log message ***
ca
parents: 8190
diff changeset
   318
                    ].
7027457dbe4f *** empty log message ***
ca
parents: 8190
diff changeset
   319
                    clsName2 isBehavior ifTrue:[
7027457dbe4f *** empty log message ***
ca
parents: 8190
diff changeset
   320
                        cls2 := clsName2
7027457dbe4f *** empty log message ***
ca
parents: 8190
diff changeset
   321
                    ] ifFalse:[
7027457dbe4f *** empty log message ***
ca
parents: 8190
diff changeset
   322
                        cls2 := CharacterEncoderImplementations at:clsName2.
7027457dbe4f *** empty log message ***
ca
parents: 8190
diff changeset
   323
                    ].
7027457dbe4f *** empty log message ***
ca
parents: 8190
diff changeset
   324
encodingNameSymbol = 'sjis' ifTrue:[ self halt ].
7027457dbe4f *** empty log message ***
ca
parents: 8190
diff changeset
   325
                    (cls1 notNil and:[cls2 notNil]) ifTrue:[
7027457dbe4f *** empty log message ***
ca
parents: 8190
diff changeset
   326
encodingNameSymbol = 'sjis' ifTrue:[ self halt ].
7027457dbe4f *** empty log message ***
ca
parents: 8190
diff changeset
   327
                        enc := TwoStepEncoder new encoder1:enc1 encoder2:enc2.
7027457dbe4f *** empty log message ***
ca
parents: 8190
diff changeset
   328
                        ^ enc.
7027457dbe4f *** empty log message ***
ca
parents: 8190
diff changeset
   329
                    ].
7027457dbe4f *** empty log message ***
ca
parents: 8190
diff changeset
   330
                ]
7027457dbe4f *** empty log message ***
ca
parents: 8190
diff changeset
   331
            ]
7027457dbe4f *** empty log message ***
ca
parents: 8190
diff changeset
   332
        ]
7027457dbe4f *** empty log message ***
ca
parents: 8190
diff changeset
   333
    ].
7027457dbe4f *** empty log message ***
ca
parents: 8190
diff changeset
   334
7971
357e53496acc *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7969
diff changeset
   335
    ^ exceptionValue value
357e53496acc *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7969
diff changeset
   336
357e53496acc *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7969
diff changeset
   337
    "
357e53496acc *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7969
diff changeset
   338
     CharacterEncoder encoderFor:#'latin1'       
7972
91aa73f89491 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7971
diff changeset
   339
     self encoderFor:#'arabic'              
91aa73f89491 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7971
diff changeset
   340
     self encoderFor:#'ms-arabic'           
91aa73f89491 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7971
diff changeset
   341
     self encoderFor:#'iso8859-5'           
7971
357e53496acc *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7969
diff changeset
   342
     self encoderFor:#'koi8-r'      
357e53496acc *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7969
diff changeset
   343
     self encoderFor:#'koi8-u'      
357e53496acc *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7969
diff changeset
   344
     self encoderFor:#'jis0208'      
357e53496acc *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7969
diff changeset
   345
     self encoderFor:#'jis7'      
7972
91aa73f89491 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7971
diff changeset
   346
     self encoderFor:#'unicode'      
7971
357e53496acc *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7969
diff changeset
   347
    "
357e53496acc *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7969
diff changeset
   348
!
357e53496acc *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7969
diff changeset
   349
357e53496acc *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7969
diff changeset
   350
encoderToEncodeFrom:oldEncodingArg into:newEncodingArg
8135
f22398526ae2 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8134
diff changeset
   351
    |oldEncoding newEncoding encoders encoderClasses encoder decoder clsName cls|
8118
efc99c0f68bc *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8114
diff changeset
   352
7971
357e53496acc *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7969
diff changeset
   353
    oldEncoding := oldEncodingArg ? #'unicode'.
7972
91aa73f89491 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7971
diff changeset
   354
    oldEncoding == #'iso10646-1' ifTrue:[ oldEncoding :=  #'unicode'].
7971
357e53496acc *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7969
diff changeset
   355
    newEncoding := newEncodingArg ? #'unicode'.
7972
91aa73f89491 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7971
diff changeset
   356
    newEncoding == #'iso10646-1' ifTrue:[ newEncoding :=  #'unicode'].
91aa73f89491 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7971
diff changeset
   357
8120
bafc72f60618 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8119
diff changeset
   358
    oldEncoding isSymbol ifFalse:[self halt:'symbol argument expected'. oldEncoding := oldEncoding asSymbol].
bafc72f60618 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8119
diff changeset
   359
    newEncoding isSymbol ifFalse:[self halt:'symbol argument expected'. newEncoding := newEncoding asSymbol].
bafc72f60618 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8119
diff changeset
   360
8118
efc99c0f68bc *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8114
diff changeset
   361
    oldEncoding == newEncoding ifTrue:[^ NullEncoderInstance].
efc99c0f68bc *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8114
diff changeset
   362
    (oldEncoding match:newEncoding) ifTrue:[^ NullEncoderInstance].
7971
357e53496acc *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7969
diff changeset
   363
8122
29670db31014 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8120
diff changeset
   364
    (oldEncoding == #unicode) ifTrue:[
8155
5c67868ddc38 *** empty log message ***
ca
parents: 8154
diff changeset
   365
        "/ something -> unicode 
5c67868ddc38 *** empty log message ***
ca
parents: 8154
diff changeset
   366
        ^ self encoderFor:newEncoding.
8122
29670db31014 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8120
diff changeset
   367
    ].
29670db31014 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8120
diff changeset
   368
8118
efc99c0f68bc *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8114
diff changeset
   369
    AccessLock critical:[
8155
5c67868ddc38 *** empty log message ***
ca
parents: 8154
diff changeset
   370
        encoders := EncodersByName at:oldEncoding ifAbsent:nil.
5c67868ddc38 *** empty log message ***
ca
parents: 8154
diff changeset
   371
        encoders isNil ifTrue:[
5c67868ddc38 *** empty log message ***
ca
parents: 8154
diff changeset
   372
            EncodersByName at:oldEncoding put:(encoders := Dictionary new).
5c67868ddc38 *** empty log message ***
ca
parents: 8154
diff changeset
   373
        ].
5c67868ddc38 *** empty log message ***
ca
parents: 8154
diff changeset
   374
        encoder := encoders at:newEncodingArg ifAbsent:nil.
5c67868ddc38 *** empty log message ***
ca
parents: 8154
diff changeset
   375
        encoder isNil ifTrue:[
5c67868ddc38 *** empty log message ***
ca
parents: 8154
diff changeset
   376
            encoderClasses := EncoderClassesByName at:oldEncoding ifAbsent:nil.
5c67868ddc38 *** empty log message ***
ca
parents: 8154
diff changeset
   377
            encoderClasses isNil ifTrue:[
5c67868ddc38 *** empty log message ***
ca
parents: 8154
diff changeset
   378
                EncoderClassesByName at:oldEncoding put:(encoderClasses := Dictionary new).
5c67868ddc38 *** empty log message ***
ca
parents: 8154
diff changeset
   379
            ].
5c67868ddc38 *** empty log message ***
ca
parents: 8154
diff changeset
   380
            clsName := encoderClasses at:newEncoding ifAbsent:nil.
5c67868ddc38 *** empty log message ***
ca
parents: 8154
diff changeset
   381
            clsName notNil ifTrue:[
5c67868ddc38 *** empty log message ***
ca
parents: 8154
diff changeset
   382
                clsName isBehavior ifTrue:[
5c67868ddc38 *** empty log message ***
ca
parents: 8154
diff changeset
   383
                    encoder := clsName new
5c67868ddc38 *** empty log message ***
ca
parents: 8154
diff changeset
   384
                ] ifFalse:[
5c67868ddc38 *** empty log message ***
ca
parents: 8154
diff changeset
   385
                    cls := CharacterEncoderImplementations at:clsName.
5c67868ddc38 *** empty log message ***
ca
parents: 8154
diff changeset
   386
                    cls notNil ifTrue:[
5c67868ddc38 *** empty log message ***
ca
parents: 8154
diff changeset
   387
                        encoder := cls new.
5c67868ddc38 *** empty log message ***
ca
parents: 8154
diff changeset
   388
                    ]
5c67868ddc38 *** empty log message ***
ca
parents: 8154
diff changeset
   389
                ]
5c67868ddc38 *** empty log message ***
ca
parents: 8154
diff changeset
   390
            ].
5c67868ddc38 *** empty log message ***
ca
parents: 8154
diff changeset
   391
        ].
7971
357e53496acc *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7969
diff changeset
   392
    ].
357e53496acc *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7969
diff changeset
   393
8118
efc99c0f68bc *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8114
diff changeset
   394
    encoder isNil ifTrue:[
8155
5c67868ddc38 *** empty log message ***
ca
parents: 8154
diff changeset
   395
        (newEncoding == #unicode) ifTrue:[
5c67868ddc38 *** empty log message ***
ca
parents: 8154
diff changeset
   396
            "/ something -> unicode 
5c67868ddc38 *** empty log message ***
ca
parents: 8154
diff changeset
   397
            decoder := self encoderFor:oldEncoding.
5c67868ddc38 *** empty log message ***
ca
parents: 8154
diff changeset
   398
            encoder := InverseEncoder new decoder:decoder.
5c67868ddc38 *** empty log message ***
ca
parents: 8154
diff changeset
   399
        ] ifFalse:[
5c67868ddc38 *** empty log message ***
ca
parents: 8154
diff changeset
   400
            "/ do it as: oldEncoding -> unicode -> newEncoding
7972
91aa73f89491 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7971
diff changeset
   401
8155
5c67868ddc38 *** empty log message ***
ca
parents: 8154
diff changeset
   402
            "/ something -> unicode 
5c67868ddc38 *** empty log message ***
ca
parents: 8154
diff changeset
   403
            decoder := self encoderFor:oldEncoding.
7972
91aa73f89491 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7971
diff changeset
   404
8155
5c67868ddc38 *** empty log message ***
ca
parents: 8154
diff changeset
   405
            "/ unicode -> something
5c67868ddc38 *** empty log message ***
ca
parents: 8154
diff changeset
   406
            encoder := self encoderFor:newEncoding.
5c67868ddc38 *** empty log message ***
ca
parents: 8154
diff changeset
   407
            encoder := CompoundEncoder new encoder:encoder decoder:decoder.
5c67868ddc38 *** empty log message ***
ca
parents: 8154
diff changeset
   408
        ].
7971
357e53496acc *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7969
diff changeset
   409
    ].
357e53496acc *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7969
diff changeset
   410
8118
efc99c0f68bc *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8114
diff changeset
   411
    AccessLock critical:[
8155
5c67868ddc38 *** empty log message ***
ca
parents: 8154
diff changeset
   412
        (EncodersByName at:oldEncoding) at:newEncoding put:encoder
8118
efc99c0f68bc *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8114
diff changeset
   413
    ].
efc99c0f68bc *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8114
diff changeset
   414
    ^ encoder
7971
357e53496acc *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7969
diff changeset
   415
8118
efc99c0f68bc *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8114
diff changeset
   416
    "   CharacterEncoder initialize
7972
91aa73f89491 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7971
diff changeset
   417
     CharacterEncoder encoderToEncodeFrom:#'latin1' into:#'jis7'      
8118
efc99c0f68bc *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8114
diff changeset
   418
     CharacterEncoder encoderToEncodeFrom:#'koi8-r' into:#'mac-cyrillic'              
8087
0a2ee76bcf55 last version before separating into extra classes
Claus Gittinger <cg@exept.de>
parents: 8062
diff changeset
   419
     CharacterEncoder encoderToEncodeFrom:#'ms-arabic' into:#'mac-arabic'           
0a2ee76bcf55 last version before separating into extra classes
Claus Gittinger <cg@exept.de>
parents: 8062
diff changeset
   420
     CharacterEncoder encoderToEncodeFrom:#'iso8859-5' into:#'koi8-r'           
0a2ee76bcf55 last version before separating into extra classes
Claus Gittinger <cg@exept.de>
parents: 8062
diff changeset
   421
     CharacterEncoder encoderToEncodeFrom:#'koi8-r' into:#'koi8-u'       
7971
357e53496acc *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7969
diff changeset
   422
    "
357e53496acc *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7969
diff changeset
   423
! !
357e53496acc *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7969
diff changeset
   424
7932
ee233bf44df5 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7924
diff changeset
   425
!CharacterEncoder class methodsFor:'Compatibility-ST80'!
ee233bf44df5 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7924
diff changeset
   426
ee233bf44df5 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7924
diff changeset
   427
encoderNamed: encoderName
ee233bf44df5 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7924
diff changeset
   428
    "/ q & d hack
ee233bf44df5 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7924
diff changeset
   429
ee233bf44df5 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7924
diff changeset
   430
    encoderName == #default ifTrue:[
8136
30b63b09b99a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8135
diff changeset
   431
	^ DefaultEncoder new
7932
ee233bf44df5 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7924
diff changeset
   432
    ].
ee233bf44df5 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7924
diff changeset
   433
self halt.
ee233bf44df5 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7924
diff changeset
   434
    ^ self new
ee233bf44df5 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7924
diff changeset
   435
!
ee233bf44df5 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7924
diff changeset
   436
ee233bf44df5 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7924
diff changeset
   437
platformName
ee233bf44df5 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7924
diff changeset
   438
    ^ OperatingSystem platformName
ee233bf44df5 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7924
diff changeset
   439
ee233bf44df5 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7924
diff changeset
   440
    "Created: 20.6.1997 / 17:34:03 / cg"
ee233bf44df5 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7924
diff changeset
   441
    "Modified: 20.6.1997 / 17:38:40 / cg"
ee233bf44df5 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7924
diff changeset
   442
! !
ee233bf44df5 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7924
diff changeset
   443
7899
7577df77ba95 character encodings - first attempt
Claus Gittinger <cg@exept.de>
parents: 7893
diff changeset
   444
!CharacterEncoder class methodsFor:'class initialization'!
7577df77ba95 character encodings - first attempt
Claus Gittinger <cg@exept.de>
parents: 7893
diff changeset
   445
7577df77ba95 character encodings - first attempt
Claus Gittinger <cg@exept.de>
parents: 7893
diff changeset
   446
initialize
8154
87ec7c3be46a *** empty log message ***
ca
parents: 8153
diff changeset
   447
    |ud|
87ec7c3be46a *** empty log message ***
ca
parents: 8153
diff changeset
   448
8151
1f0fc1d4516b *** empty log message ***
ca
parents: 8150
diff changeset
   449
    AccessLock := RecursionLock new.
8118
efc99c0f68bc *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8114
diff changeset
   450
    NullEncoderInstance := NullEncoder new.
7973
6dea491d56f7 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7972
diff changeset
   451
8126
33f9c4850e84 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8122
diff changeset
   452
    EncodersByName := Dictionary new.
33f9c4850e84 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8122
diff changeset
   453
    EncoderClassesByName := Dictionary new.
33f9c4850e84 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8122
diff changeset
   454
    CachedEncoders := Dictionary new.
7972
91aa73f89491 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7971
diff changeset
   455
8154
87ec7c3be46a *** empty log message ***
ca
parents: 8153
diff changeset
   456
    EncoderClassesByName at:#'unicode' put:(ud := Dictionary new).
87ec7c3be46a *** empty log message ***
ca
parents: 8153
diff changeset
   457
    ud at:#'fontspecific' put:NullEncoder.    
87ec7c3be46a *** empty log message ***
ca
parents: 8153
diff changeset
   458
    ud at:#'adobe-fontspecific' put:NullEncoder.    
8190
2c1bbf4a6a13 ms-oem untranslated
ca
parents: 8187
diff changeset
   459
    ud at:#'ms-oem' put:NullEncoder.    
8152
e07693c46cf5 *** empty log message ***
ca
parents: 8151
diff changeset
   460
8135
f22398526ae2 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8134
diff changeset
   461
    "/ className decoded-name array-of-encodingNames
8118
efc99c0f68bc *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8114
diff changeset
   462
    #(
8151
1f0fc1d4516b *** empty log message ***
ca
parents: 8150
diff changeset
   463
        (ASCII              unicode     ( ascii 'us-ascii' 'iso-ir-6' 'ibm-367' 'ms-cp367' 'cp367'  'iso646-us' 'ibm-cp367' ))
8118
efc99c0f68bc *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8114
diff changeset
   464
8151
1f0fc1d4516b *** empty log message ***
ca
parents: 8150
diff changeset
   465
        (BIG5               unicode     ( big5 ))
8118
efc99c0f68bc *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8114
diff changeset
   466
8151
1f0fc1d4516b *** empty log message ***
ca
parents: 8150
diff changeset
   467
        (CNS11643           unicode     ( 'cns11643' ))
8118
efc99c0f68bc *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8114
diff changeset
   468
8151
1f0fc1d4516b *** empty log message ***
ca
parents: 8150
diff changeset
   469
        (CP437              unicode     ( 'cp437'  'cp-437' 'ibm-437' 'ms-cp437' 'microsoft-cp437' 'ibm-cp437' ))
8118
efc99c0f68bc *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8114
diff changeset
   470
8151
1f0fc1d4516b *** empty log message ***
ca
parents: 8150
diff changeset
   471
        (GB2313_1980        unicode     ( 'gb2313' 'gb2313-1980' ))
8118
efc99c0f68bc *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8114
diff changeset
   472
8151
1f0fc1d4516b *** empty log message ***
ca
parents: 8150
diff changeset
   473
        (HANGUL             unicode     ( 'hangul' ))
8118
efc99c0f68bc *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8114
diff changeset
   474
8151
1f0fc1d4516b *** empty log message ***
ca
parents: 8150
diff changeset
   475
        (ISO10646_1         unicode     ( unicode 'iso10646_1' 'iso10646-1' 'iso-10646-1' ))
8118
efc99c0f68bc *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8114
diff changeset
   476
8151
1f0fc1d4516b *** empty log message ***
ca
parents: 8150
diff changeset
   477
        (ISO10646_to_UTF8   unicode     ( utf8 'utf-8' ))
8118
efc99c0f68bc *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8114
diff changeset
   478
8151
1f0fc1d4516b *** empty log message ***
ca
parents: 8150
diff changeset
   479
        (ISO8859_1          unicode     ( 'iso8859_1' 'iso8859-1' 'iso-8859-1' 'latin-1' 'latin1' 'iso-ir-100' 'ibm-819' 'ms-cp819' 'ibm-cp819' ))
8118
efc99c0f68bc *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8114
diff changeset
   480
8151
1f0fc1d4516b *** empty log message ***
ca
parents: 8150
diff changeset
   481
        (ISO8859_2          unicode     ( 'iso8859_2' 'iso8859-2' 'iso-8859-2' 'latin2' 'latin-2' 'iso-ir-101'))
8118
efc99c0f68bc *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8114
diff changeset
   482
8151
1f0fc1d4516b *** empty log message ***
ca
parents: 8150
diff changeset
   483
        (ISO8859_3          unicode     ( 'iso8859_3' 'iso8859-3' 'iso-8859-3' 'latin3' 'latin-3' 'iso-ir-109'))
8118
efc99c0f68bc *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8114
diff changeset
   484
8151
1f0fc1d4516b *** empty log message ***
ca
parents: 8150
diff changeset
   485
        (ISO8859_4          unicode     ( 'iso8859_4' 'iso8859-4' 'iso-8859-4' 'latin4' 'latin-4' 'iso-ir-110'))
8118
efc99c0f68bc *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8114
diff changeset
   486
8151
1f0fc1d4516b *** empty log message ***
ca
parents: 8150
diff changeset
   487
        (ISO8859_5          unicode     ( 'iso8859_5' 'iso8859-5' 'iso-8859-5' 'cyrillic' 'iso-ir-144' ))
8118
efc99c0f68bc *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8114
diff changeset
   488
8151
1f0fc1d4516b *** empty log message ***
ca
parents: 8150
diff changeset
   489
        (ISO8859_6          unicode     ( 'iso8859_6' 'iso8859-6' 'iso-8859-6' 'arabic' 'asmo-708' 'ecma-114' 'iso-ir-127' ))
8118
efc99c0f68bc *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8114
diff changeset
   490
8151
1f0fc1d4516b *** empty log message ***
ca
parents: 8150
diff changeset
   491
        (ISO8859_7          unicode     ( 'iso8859_7' 'iso8859-7' 'iso-8859-7' 'greek' 'iso-ir-126' 'ecma-118'))
8118
efc99c0f68bc *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8114
diff changeset
   492
8151
1f0fc1d4516b *** empty log message ***
ca
parents: 8150
diff changeset
   493
        (ISO8859_8          unicode     ( 'iso8859_8' 'iso8859-8' 'iso-8859-8' 'hebrew' 'iso-ir-138' ))
8118
efc99c0f68bc *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8114
diff changeset
   494
8151
1f0fc1d4516b *** empty log message ***
ca
parents: 8150
diff changeset
   495
        (ISO8859_9          unicode     ( 'iso8859_9' 'iso8859-9' 'iso-8859-9' 'latin5' 'latin-5' 'iso-ir-148'))
8118
efc99c0f68bc *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8114
diff changeset
   496
8151
1f0fc1d4516b *** empty log message ***
ca
parents: 8150
diff changeset
   497
        (ISO8859_10         unicode     ( 'iso8859_10' 'iso8859-10' 'iso-8859-10' 'latin6' 'latin-6' 'iso-ir-157'))
8118
efc99c0f68bc *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8114
diff changeset
   498
8151
1f0fc1d4516b *** empty log message ***
ca
parents: 8150
diff changeset
   499
        (ISO8859_11         unicode     ( 'iso8859_11' 'iso8859-11' 'iso-8859-11' 'thai' ))
8118
efc99c0f68bc *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8114
diff changeset
   500
8151
1f0fc1d4516b *** empty log message ***
ca
parents: 8150
diff changeset
   501
        (ISO8859_13         unicode     ( 'iso8859_13' 'iso8859-13' 'iso-8859-13' 'latin7' 'latin-7' ))
8118
efc99c0f68bc *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8114
diff changeset
   502
8151
1f0fc1d4516b *** empty log message ***
ca
parents: 8150
diff changeset
   503
        (ISO8859_14         unicode     ( 'iso8859_14' 'iso8859-14' 'iso-8859-14' 'latin8' 'latin-8' 'latin-celtic' ))
8118
efc99c0f68bc *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8114
diff changeset
   504
8151
1f0fc1d4516b *** empty log message ***
ca
parents: 8150
diff changeset
   505
        (ISO8859_15         unicode     ( 'iso8859_15' 'iso8859-15' 'iso-8859-15' 'latin9' 'latin-9' 'iso-ir-203'))
8118
efc99c0f68bc *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8114
diff changeset
   506
8151
1f0fc1d4516b *** empty log message ***
ca
parents: 8150
diff changeset
   507
        (ISO8859_16         unicode     ( 'iso8859_16' 'iso8859-16' 'iso-8859-16' 'latin10' 'latin-10' ))
8118
efc99c0f68bc *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8114
diff changeset
   508
8151
1f0fc1d4516b *** empty log message ***
ca
parents: 8150
diff changeset
   509
        (JIS0201            unicode     ( 'jis0201' #'jisx0201.1976-0'))
8118
efc99c0f68bc *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8114
diff changeset
   510
8151
1f0fc1d4516b *** empty log message ***
ca
parents: 8150
diff changeset
   511
        (JIS0208            unicode     ( jis0208 'jisx0208' 'jisx0208.1983-0' 'jisx0208.1990-0'))
8118
efc99c0f68bc *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8114
diff changeset
   512
8151
1f0fc1d4516b *** empty log message ***
ca
parents: 8150
diff changeset
   513
        (JIS0208_to_JIS7    jis0208     ( jis7 'jis-7' 'x-jis7' 'x-iso2022-jp' 'iso2022-jp'))
8118
efc99c0f68bc *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8114
diff changeset
   514
8151
1f0fc1d4516b *** empty log message ***
ca
parents: 8150
diff changeset
   515
        (JIS0208_to_EUC     jis0208     ( euc #'x-euc-jp' ))
8122
29670db31014 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8120
diff changeset
   516
8176
66d1004f1806 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8168
diff changeset
   517
        (JIS0208_to_SJIS    jis0208     ( 'sjis' 'shiftjis' 'x-sjis' #'x-shift-jis' #'shift-jis'))
66d1004f1806 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8168
diff changeset
   518
8151
1f0fc1d4516b *** empty log message ***
ca
parents: 8150
diff changeset
   519
        (JIS0212            unicode     ( 'jis0212' ))
8118
efc99c0f68bc *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8114
diff changeset
   520
8151
1f0fc1d4516b *** empty log message ***
ca
parents: 8150
diff changeset
   521
        (JOHAB              unicode     ( 'johab' ))
8118
efc99c0f68bc *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8114
diff changeset
   522
8151
1f0fc1d4516b *** empty log message ***
ca
parents: 8150
diff changeset
   523
        (KOI7               unicode     ( 'koi7' ))
8118
efc99c0f68bc *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8114
diff changeset
   524
8151
1f0fc1d4516b *** empty log message ***
ca
parents: 8150
diff changeset
   525
        (KOI8_R             unicode     ( #'koi8-r' 'cp878' ))
8118
efc99c0f68bc *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8114
diff changeset
   526
8151
1f0fc1d4516b *** empty log message ***
ca
parents: 8150
diff changeset
   527
        (KOI8_U             unicode     ( #'koi8-u' ))
8118
efc99c0f68bc *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8114
diff changeset
   528
8151
1f0fc1d4516b *** empty log message ***
ca
parents: 8150
diff changeset
   529
        (KSC5601            unicode     ( #'ksc5601' ))
8118
efc99c0f68bc *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8114
diff changeset
   530
8151
1f0fc1d4516b *** empty log message ***
ca
parents: 8150
diff changeset
   531
        (MAC_Arabic         unicode     ( #'mac-arabic' 'macarabic' ))
8118
efc99c0f68bc *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8114
diff changeset
   532
8151
1f0fc1d4516b *** empty log message ***
ca
parents: 8150
diff changeset
   533
        (MAC_CentralEuropean unicode    ( #'mac-centraleuropean' #'mac-centraleurope' 'maccentraleurope' 'maccentraleuropean' ))
8118
efc99c0f68bc *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8114
diff changeset
   534
8151
1f0fc1d4516b *** empty log message ***
ca
parents: 8150
diff changeset
   535
        (MAC_Croatian       unicode     ( #'mac-croatian' 'maccroatian'))
8118
efc99c0f68bc *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8114
diff changeset
   536
8151
1f0fc1d4516b *** empty log message ***
ca
parents: 8150
diff changeset
   537
        (MAC_Cyrillic       unicode     ( #'mac-cyrillic' 'maccyrillic' ))
8118
efc99c0f68bc *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8114
diff changeset
   538
8151
1f0fc1d4516b *** empty log message ***
ca
parents: 8150
diff changeset
   539
        (MAC_Dingbats       unicode     ( #'mac-dingbats'  'macdingbats'  'macdingbat'))
8118
efc99c0f68bc *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8114
diff changeset
   540
8151
1f0fc1d4516b *** empty log message ***
ca
parents: 8150
diff changeset
   541
        (MAC_Farsi          unicode     ( #'mac-farsi' 'macfarsi' ))
8118
efc99c0f68bc *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8114
diff changeset
   542
8151
1f0fc1d4516b *** empty log message ***
ca
parents: 8150
diff changeset
   543
        (MAC_Greek          unicode     ( #'mac-greek' #'macgreek' ))
8118
efc99c0f68bc *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8114
diff changeset
   544
8151
1f0fc1d4516b *** empty log message ***
ca
parents: 8150
diff changeset
   545
        (MAC_Hebrew         unicode     ( #'mac-hebrew' #'machebrew'  ))
8118
efc99c0f68bc *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8114
diff changeset
   546
8151
1f0fc1d4516b *** empty log message ***
ca
parents: 8150
diff changeset
   547
        (MAC_Iceland        unicode     ( #'mac-iceland' #'maciceland'  ))
8118
efc99c0f68bc *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8114
diff changeset
   548
8151
1f0fc1d4516b *** empty log message ***
ca
parents: 8150
diff changeset
   549
        (MAC_Japanese       unicode     ( #'mac-japanese' #'macjapanese'  ))
8118
efc99c0f68bc *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8114
diff changeset
   550
8151
1f0fc1d4516b *** empty log message ***
ca
parents: 8150
diff changeset
   551
        (MAC_Korean         unicode     ( #'mac-korean' #'mackorean'  ))
8118
efc99c0f68bc *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8114
diff changeset
   552
8151
1f0fc1d4516b *** empty log message ***
ca
parents: 8150
diff changeset
   553
        (MAC_Roman          unicode     ( #'mac-roman' #'macroman'  ))
8118
efc99c0f68bc *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8114
diff changeset
   554
8151
1f0fc1d4516b *** empty log message ***
ca
parents: 8150
diff changeset
   555
        (MAC_Romanian       unicode     ( #'mac-romanian' #'macromanian'  ))
8118
efc99c0f68bc *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8114
diff changeset
   556
8151
1f0fc1d4516b *** empty log message ***
ca
parents: 8150
diff changeset
   557
        (MAC_Symbol         unicode     ( #'mac-symbol' #'macsymbol'  ))
8118
efc99c0f68bc *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8114
diff changeset
   558
8151
1f0fc1d4516b *** empty log message ***
ca
parents: 8150
diff changeset
   559
        (MAC_Thai           unicode     ( #'mac-thai' #'macthai'  ))
8118
efc99c0f68bc *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8114
diff changeset
   560
8151
1f0fc1d4516b *** empty log message ***
ca
parents: 8150
diff changeset
   561
        (MAC_Turkish        unicode     ( #'mac-turkish' #'macturkish'  ))
8118
efc99c0f68bc *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8114
diff changeset
   562
8151
1f0fc1d4516b *** empty log message ***
ca
parents: 8150
diff changeset
   563
        (MS_Ansi            unicode     ( #'ms-ansi' 'ms-cp1252' 'microsoft-cp1252' 'cp1252' 'microsoft-ansi' 'windows-1252' 'windows-latin1'))
8118
efc99c0f68bc *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8114
diff changeset
   564
8151
1f0fc1d4516b *** empty log message ***
ca
parents: 8150
diff changeset
   565
        (MS_Arabic          unicode     ( 'ms-arabic' 'ms-cp1256' 'microsoft-cp1256' 'cp1256'  'microsoft-arabic' 'windows-1256'  ))
8118
efc99c0f68bc *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8114
diff changeset
   566
8151
1f0fc1d4516b *** empty log message ***
ca
parents: 8150
diff changeset
   567
        (MS_Baltic          unicode     ( 'ms-baltic' 'ms-cp1257' 'microsoft-cp1257' 'cp1257' 'microsoft-baltic' 'windows-1257'  ))
8118
efc99c0f68bc *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8114
diff changeset
   568
8151
1f0fc1d4516b *** empty log message ***
ca
parents: 8150
diff changeset
   569
        (MS_Cyrillic        unicode     ( 'ms-cyrillic' 'ms-cp1251' 'microsoft-cp1251' 'cp1251' 'microsoft-cyrillic' 'windows-1251'  ))
8118
efc99c0f68bc *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8114
diff changeset
   570
8151
1f0fc1d4516b *** empty log message ***
ca
parents: 8150
diff changeset
   571
        (MS_EastEuropean    unicode     ( 'ms-easteuropean' 'ms-ee' 'cp1250' 'ms-cp1250' 'microsoft-cp1250' 'microsoft-easteuropean' 'windows-1250'  ))
8118
efc99c0f68bc *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8114
diff changeset
   572
8151
1f0fc1d4516b *** empty log message ***
ca
parents: 8150
diff changeset
   573
        (MS_Greek           unicode     ( 'ms-greek' 'ms-cp1253' 'microsoft-cp1253' 'cp1253' 'microsoft-greek' 'windows-1253' ))
8118
efc99c0f68bc *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8114
diff changeset
   574
8151
1f0fc1d4516b *** empty log message ***
ca
parents: 8150
diff changeset
   575
        (MS_Hebrew          unicode     ( 'ms-hebrew' 'ms-cp1255' 'microsoft-cp1255' 'cp1255' 'microsoft-hebrew' 'windows-1255' ))
8118
efc99c0f68bc *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8114
diff changeset
   576
efc99c0f68bc *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8114
diff changeset
   577
"/        (MS_Symbol           unicode     ( 'ms-symbol' 'microsoft-symbol'  ))
efc99c0f68bc *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8114
diff changeset
   578
8151
1f0fc1d4516b *** empty log message ***
ca
parents: 8150
diff changeset
   579
        (MS_Turkish         unicode     ( 'ms-turkish' 'ms-cp1254' 'microsoft-cp1254' 'cp1254' 'microsoft-turkish' 'windows-1254'  ))
8118
efc99c0f68bc *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8114
diff changeset
   580
8151
1f0fc1d4516b *** empty log message ***
ca
parents: 8150
diff changeset
   581
        (NEXT               unicode     ( 'next' 'nextstep'  ))
8186
ae97115c26f5 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8176
diff changeset
   582
8187
102db6ff634b *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8186
diff changeset
   583
        (ISO10646_to_SGML   unicode     ( 'sgml' ))
8118
efc99c0f68bc *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8114
diff changeset
   584
    ) triplesDo:[:className :decodesTo :encodesTo |
8151
1f0fc1d4516b *** empty log message ***
ca
parents: 8150
diff changeset
   585
        |dict|
8134
0296806cb4bb *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8132
diff changeset
   586
8151
1f0fc1d4516b *** empty log message ***
ca
parents: 8150
diff changeset
   587
        "/ notice that the encoders are not yet installed as autoloaded.
1f0fc1d4516b *** empty log message ***
ca
parents: 8150
diff changeset
   588
        "/ Therefore, we remember their names here.
1f0fc1d4516b *** empty log message ***
ca
parents: 8150
diff changeset
   589
        dict := EncoderClassesByName at:decodesTo ifAbsent:nil.
1f0fc1d4516b *** empty log message ***
ca
parents: 8150
diff changeset
   590
        dict isNil ifTrue:[
1f0fc1d4516b *** empty log message ***
ca
parents: 8150
diff changeset
   591
            EncoderClassesByName at:decodesTo put:(dict := Dictionary new).
1f0fc1d4516b *** empty log message ***
ca
parents: 8150
diff changeset
   592
        ].
1f0fc1d4516b *** empty log message ***
ca
parents: 8150
diff changeset
   593
        encodesTo do:[:eachEncodingAlias |
1f0fc1d4516b *** empty log message ***
ca
parents: 8150
diff changeset
   594
            (dict includesKey:eachEncodingAlias) ifTrue:[
1f0fc1d4516b *** empty log message ***
ca
parents: 8150
diff changeset
   595
                self halt:'conflicting alias'
1f0fc1d4516b *** empty log message ***
ca
parents: 8150
diff changeset
   596
            ].
1f0fc1d4516b *** empty log message ***
ca
parents: 8150
diff changeset
   597
            dict at:eachEncodingAlias put:className.    
1f0fc1d4516b *** empty log message ***
ca
parents: 8150
diff changeset
   598
        ].
8118
efc99c0f68bc *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8114
diff changeset
   599
    ].
7899
7577df77ba95 character encodings - first attempt
Claus Gittinger <cg@exept.de>
parents: 7893
diff changeset
   600
7577df77ba95 character encodings - first attempt
Claus Gittinger <cg@exept.de>
parents: 7893
diff changeset
   601
    "
7577df77ba95 character encodings - first attempt
Claus Gittinger <cg@exept.de>
parents: 7893
diff changeset
   602
     self initialize
7577df77ba95 character encodings - first attempt
Claus Gittinger <cg@exept.de>
parents: 7893
diff changeset
   603
    "
7892
149a145e871c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   604
! !
149a145e871c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   605
8122
29670db31014 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8120
diff changeset
   606
!CharacterEncoder class methodsFor:'constants'!
29670db31014 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8120
diff changeset
   607
29670db31014 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8120
diff changeset
   608
jis7KanjiEscapeSequence
29670db31014 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8120
diff changeset
   609
    "return the escape sequence used to switch to kanji in jis7 encoded strings.
29670db31014 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8120
diff changeset
   610
     This happens to be the same as ISO2022-JP's escape sequence."
29670db31014 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8120
diff changeset
   611
29670db31014 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8120
diff changeset
   612
    Jis7KanjiEscapeSequence isNil ifTrue:[
29670db31014 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8120
diff changeset
   613
	Jis7KanjiEscapeSequence := Character esc asString , '$B'.
29670db31014 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8120
diff changeset
   614
    ].
29670db31014 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8120
diff changeset
   615
    ^ Jis7KanjiEscapeSequence.
29670db31014 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8120
diff changeset
   616
29670db31014 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8120
diff changeset
   617
    "Created: 26.2.1996 / 17:38:08 / cg"
29670db31014 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8120
diff changeset
   618
    "Modified: 30.6.1997 / 16:03:16 / cg"
29670db31014 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8120
diff changeset
   619
!
29670db31014 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8120
diff changeset
   620
29670db31014 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8120
diff changeset
   621
jis7KanjiOldEscapeSequence
29670db31014 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8120
diff changeset
   622
    "return the escape sequence used to switch to kanji in some old jis7 encoded strings."
29670db31014 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8120
diff changeset
   623
29670db31014 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8120
diff changeset
   624
    Jis7KanjiOldEscapeSequence isNil ifTrue:[
8136
30b63b09b99a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8135
diff changeset
   625
	Jis7KanjiOldEscapeSequence := Character esc asString , '$@'..
8122
29670db31014 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8120
diff changeset
   626
    ].
29670db31014 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8120
diff changeset
   627
    ^ Jis7KanjiOldEscapeSequence.
29670db31014 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8120
diff changeset
   628
!
29670db31014 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8120
diff changeset
   629
29670db31014 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8120
diff changeset
   630
jis7RomanEscapeSequence
29670db31014 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8120
diff changeset
   631
    "return the escape sequence used to switch to roman in jis7 encoded strings"
29670db31014 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8120
diff changeset
   632
29670db31014 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8120
diff changeset
   633
    Jis7RomanEscapeSequence isNil ifTrue:[
29670db31014 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8120
diff changeset
   634
	Jis7RomanEscapeSequence := Character esc asString , '(J'.
29670db31014 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8120
diff changeset
   635
    ].
29670db31014 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8120
diff changeset
   636
    ^ Jis7RomanEscapeSequence.
29670db31014 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8120
diff changeset
   637
29670db31014 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8120
diff changeset
   638
    "Created: 26.2.1996 / 17:38:08 / cg"
29670db31014 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8120
diff changeset
   639
    "Modified: 30.6.1997 / 16:03:16 / cg"
29670db31014 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8120
diff changeset
   640
!
29670db31014 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8120
diff changeset
   641
29670db31014 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8120
diff changeset
   642
jisISO2022EscapeSequence
29670db31014 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8120
diff changeset
   643
    "return the escape sequence used to switch to kanji in iso2022 encoded strings"
29670db31014 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8120
diff changeset
   644
29670db31014 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8120
diff changeset
   645
    JisISO2022EscapeSequence isNil ifTrue:[
8136
30b63b09b99a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8135
diff changeset
   646
	JisISO2022EscapeSequence := Character esc asString , '&@' , Character esc asString , '$B'.
8122
29670db31014 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8120
diff changeset
   647
    ].
29670db31014 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8120
diff changeset
   648
    ^ JisISO2022EscapeSequence.
29670db31014 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8120
diff changeset
   649
! !
29670db31014 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8120
diff changeset
   650
7892
149a145e871c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   651
!CharacterEncoder class methodsFor:'encoding & decoding'!
149a145e871c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   652
149a145e871c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   653
decode:aCodePoint
149a145e871c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   654
    ^ self new decode:aCodePoint
149a145e871c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   655
!
149a145e871c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   656
149a145e871c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   657
decodeString:aString
149a145e871c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   658
    ^ self new decodeString:aString
149a145e871c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   659
!
149a145e871c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   660
7972
91aa73f89491 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7971
diff changeset
   661
decodeString:aString from:oldEncoding
8016
6344e4e47261 characterEncoding stuff
Claus Gittinger <cg@exept.de>
parents: 8015
diff changeset
   662
    ^ self encodeString:aString from:oldEncoding into:#'unicode'
7967
f9baf81d6991 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7964
diff changeset
   663
!
f9baf81d6991 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7964
diff changeset
   664
7892
149a145e871c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   665
encode:aCodePoint
149a145e871c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   666
    ^ self new encode:aCodePoint
149a145e871c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   667
149a145e871c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   668
    "
149a145e871c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   669
     ISO8859_1 encode:16r00FF   
149a145e871c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   670
     ISO8859_1 decodeString:'hello'
149a145e871c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   671
     ISO8859_1 encodeString:(ISO8859_1 decodeString:'hello') 
149a145e871c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   672
149a145e871c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   673
     ISO8859_5 decodeString:(String 
7899
7577df77ba95 character encodings - first attempt
Claus Gittinger <cg@exept.de>
parents: 7893
diff changeset
   674
				with:(Character value:16rE4)
7577df77ba95 character encodings - first attempt
Claus Gittinger <cg@exept.de>
parents: 7893
diff changeset
   675
				with:(Character value:16rE0)) 
7892
149a145e871c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   676
    "
149a145e871c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   677
!
149a145e871c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   678
7994
42b5face56fb *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7986
diff changeset
   679
encode:codePoint from:oldEncodingArg into:newEncodingArg
8015
e85b0c11e871 caching encoders
Claus Gittinger <cg@exept.de>
parents: 7994
diff changeset
   680
    |oldEncoding newEncoding encoder|
7994
42b5face56fb *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7986
diff changeset
   681
42b5face56fb *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7986
diff changeset
   682
    oldEncoding := oldEncodingArg ? #'unicode'.
42b5face56fb *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7986
diff changeset
   683
    oldEncoding == #'iso10646-1' ifTrue:[ oldEncoding :=  #'unicode'].
42b5face56fb *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7986
diff changeset
   684
    newEncoding := newEncodingArg ? #'unicode'.
42b5face56fb *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7986
diff changeset
   685
    newEncoding == #'iso10646-1' ifTrue:[ newEncoding :=  #'unicode'].
42b5face56fb *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7986
diff changeset
   686
42b5face56fb *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7986
diff changeset
   687
    oldEncoding == newEncoding ifTrue:[^ codePoint].
42b5face56fb *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7986
diff changeset
   688
8016
6344e4e47261 characterEncoding stuff
Claus Gittinger <cg@exept.de>
parents: 8015
diff changeset
   689
    oldEncoding == #'unicode' ifTrue:[
8136
30b63b09b99a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8135
diff changeset
   690
	newEncoding == #'iso8859-1' ifTrue:[
30b63b09b99a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8135
diff changeset
   691
	    codePoint <= 16rFF ifTrue:[
30b63b09b99a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8135
diff changeset
   692
		^ codePoint
30b63b09b99a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8135
diff changeset
   693
	    ]
30b63b09b99a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8135
diff changeset
   694
	]
8016
6344e4e47261 characterEncoding stuff
Claus Gittinger <cg@exept.de>
parents: 8015
diff changeset
   695
    ].
6344e4e47261 characterEncoding stuff
Claus Gittinger <cg@exept.de>
parents: 8015
diff changeset
   696
    newEncoding == #'unicode' ifTrue:[
8136
30b63b09b99a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8135
diff changeset
   697
	oldEncoding == #'iso8859-1' ifTrue:[
30b63b09b99a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8135
diff changeset
   698
	    codePoint <= 16rFF ifTrue:[
30b63b09b99a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8135
diff changeset
   699
		^ codePoint
30b63b09b99a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8135
diff changeset
   700
	    ]
30b63b09b99a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8135
diff changeset
   701
	]
8016
6344e4e47261 characterEncoding stuff
Claus Gittinger <cg@exept.de>
parents: 8015
diff changeset
   702
    ].
8118
efc99c0f68bc *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8114
diff changeset
   703
    encoder := self encoderToEncodeFrom:oldEncoding into:newEncoding.
8015
e85b0c11e871 caching encoders
Claus Gittinger <cg@exept.de>
parents: 7994
diff changeset
   704
    ^ encoder encode:codePoint.
7994
42b5face56fb *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7986
diff changeset
   705
!
42b5face56fb *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7986
diff changeset
   706
7899
7577df77ba95 character encodings - first attempt
Claus Gittinger <cg@exept.de>
parents: 7893
diff changeset
   707
encodeString:aUnicodeString
7577df77ba95 character encodings - first attempt
Claus Gittinger <cg@exept.de>
parents: 7893
diff changeset
   708
    "given a string in unicode, return a string in my encoding for it"
7577df77ba95 character encodings - first attempt
Claus Gittinger <cg@exept.de>
parents: 7893
diff changeset
   709
7912
fbbb59645576 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7909
diff changeset
   710
    ^ self new encodeString:aUnicodeString
7899
7577df77ba95 character encodings - first attempt
Claus Gittinger <cg@exept.de>
parents: 7893
diff changeset
   711
7577df77ba95 character encodings - first attempt
Claus Gittinger <cg@exept.de>
parents: 7893
diff changeset
   712
    "
7577df77ba95 character encodings - first attempt
Claus Gittinger <cg@exept.de>
parents: 7893
diff changeset
   713
     ISO8859_1 decodeString:'hello'
7577df77ba95 character encodings - first attempt
Claus Gittinger <cg@exept.de>
parents: 7893
diff changeset
   714
    "
7914
86a3784b40dd *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7913
diff changeset
   715
!
86a3784b40dd *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7913
diff changeset
   716
7967
f9baf81d6991 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7964
diff changeset
   717
encodeString:aString from:oldEncodingArg into:newEncodingArg
8015
e85b0c11e871 caching encoders
Claus Gittinger <cg@exept.de>
parents: 7994
diff changeset
   718
    |oldEncoding newEncoding encoder|
7967
f9baf81d6991 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7964
diff changeset
   719
f9baf81d6991 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7964
diff changeset
   720
    oldEncoding := oldEncodingArg ? #'unicode'.
7972
91aa73f89491 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7971
diff changeset
   721
    oldEncoding == #'iso10646-1' ifTrue:[ oldEncoding :=  #'unicode'].
7967
f9baf81d6991 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7964
diff changeset
   722
    newEncoding := newEncodingArg ? #'unicode'.
7972
91aa73f89491 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7971
diff changeset
   723
    newEncoding == #'iso10646-1' ifTrue:[ newEncoding :=  #'unicode'].
91aa73f89491 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7971
diff changeset
   724
7967
f9baf81d6991 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7964
diff changeset
   725
    oldEncoding == newEncoding ifTrue:[^ aString].
f9baf81d6991 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7964
diff changeset
   726
8016
6344e4e47261 characterEncoding stuff
Claus Gittinger <cg@exept.de>
parents: 8015
diff changeset
   727
    oldEncoding == #'unicode' ifTrue:[
8136
30b63b09b99a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8135
diff changeset
   728
	newEncoding == #'iso8859-1' ifTrue:[
30b63b09b99a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8135
diff changeset
   729
	    aString bitsPerCharacter == 8 ifTrue:[
30b63b09b99a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8135
diff changeset
   730
		^ aString
30b63b09b99a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8135
diff changeset
   731
	    ]
30b63b09b99a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8135
diff changeset
   732
	]
8016
6344e4e47261 characterEncoding stuff
Claus Gittinger <cg@exept.de>
parents: 8015
diff changeset
   733
    ].
6344e4e47261 characterEncoding stuff
Claus Gittinger <cg@exept.de>
parents: 8015
diff changeset
   734
    newEncoding == #'unicode' ifTrue:[
8136
30b63b09b99a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8135
diff changeset
   735
	oldEncoding == #'iso8859-1' ifTrue:[
30b63b09b99a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8135
diff changeset
   736
	    aString bitsPerCharacter == 8 ifTrue:[
30b63b09b99a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8135
diff changeset
   737
		^ aString
30b63b09b99a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8135
diff changeset
   738
	    ]
30b63b09b99a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8135
diff changeset
   739
	]
8016
6344e4e47261 characterEncoding stuff
Claus Gittinger <cg@exept.de>
parents: 8015
diff changeset
   740
    ].
6344e4e47261 characterEncoding stuff
Claus Gittinger <cg@exept.de>
parents: 8015
diff changeset
   741
8118
efc99c0f68bc *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8114
diff changeset
   742
    encoder := self encoderToEncodeFrom:oldEncoding into:newEncoding.
8015
e85b0c11e871 caching encoders
Claus Gittinger <cg@exept.de>
parents: 7994
diff changeset
   743
    ^ encoder encodeString:aString.
7972
91aa73f89491 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7971
diff changeset
   744
!
91aa73f89491 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7971
diff changeset
   745
91aa73f89491 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7971
diff changeset
   746
encodeString:aString into:newEncoding
8016
6344e4e47261 characterEncoding stuff
Claus Gittinger <cg@exept.de>
parents: 8015
diff changeset
   747
    ^ self encodeString:aString from:#'unicode' into:newEncoding
7892
149a145e871c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   748
! !
149a145e871c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   749
149a145e871c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   750
!CharacterEncoder class methodsFor:'private'!
149a145e871c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   751
149a145e871c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   752
flushCode
8127
7531ed2cdf35 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8126
diff changeset
   753
    self initialize.
7914
86a3784b40dd *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7913
diff changeset
   754
7892
149a145e871c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   755
    self isAbstract ifFalse:[
8136
30b63b09b99a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8135
diff changeset
   756
	(self mapFileURL1_relativePathName notNil
30b63b09b99a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8135
diff changeset
   757
	or:[ self mapFileURL2_relativePathName notNil]) ifTrue:[
30b63b09b99a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8135
diff changeset
   758
	    self class removeSelector:#mapping.
30b63b09b99a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8135
diff changeset
   759
	].
7892
149a145e871c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   760
    ].
149a145e871c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   761
149a145e871c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   762
    "
149a145e871c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   763
     self flushCode
149a145e871c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   764
    "
149a145e871c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   765
! !
149a145e871c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   766
149a145e871c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   767
!CharacterEncoder class methodsFor:'private-mapping setup'!
149a145e871c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   768
7899
7577df77ba95 character encodings - first attempt
Claus Gittinger <cg@exept.de>
parents: 7893
diff changeset
   769
generateCode
7909
a045c719fca2 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7904
diff changeset
   770
    (CharacterEncoderCodeGenerator new targetClass:self) generateCode.
a045c719fca2 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7904
diff changeset
   771
!
a045c719fca2 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7904
diff changeset
   772
a045c719fca2 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7904
diff changeset
   773
generateSubclassCode
a045c719fca2 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7904
diff changeset
   774
    (CharacterEncoderCodeGenerator new targetClass:self) generateSubclassCode.
7892
149a145e871c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   775
!
149a145e871c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   776
7914
86a3784b40dd *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7913
diff changeset
   777
mapFileURL1_codeColumn
86a3784b40dd *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7913
diff changeset
   778
    ^ 1
86a3784b40dd *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7913
diff changeset
   779
!
86a3784b40dd *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7913
diff changeset
   780
7912
fbbb59645576 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7909
diff changeset
   781
mapFileURL1_relativePathName
fbbb59645576 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7909
diff changeset
   782
    "raise an error: must be redefined in concrete subclass(es)"
fbbb59645576 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7909
diff changeset
   783
    
fbbb59645576 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7909
diff changeset
   784
    ^ nil
fbbb59645576 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7909
diff changeset
   785
!
fbbb59645576 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7909
diff changeset
   786
fbbb59645576 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7909
diff changeset
   787
mapFileURL2_relativePathName
fbbb59645576 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7909
diff changeset
   788
    "raise an error: must be redefined in concrete subclass(es)"
fbbb59645576 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7909
diff changeset
   789
    
fbbb59645576 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7909
diff changeset
   790
    ^ nil
fbbb59645576 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7909
diff changeset
   791
!
fbbb59645576 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7909
diff changeset
   792
7899
7577df77ba95 character encodings - first attempt
Claus Gittinger <cg@exept.de>
parents: 7893
diff changeset
   793
mappingURL1
7892
149a145e871c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   794
    "raise an error: must be redefined in concrete subclass(es)"
7912
fbbb59645576 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7909
diff changeset
   795
    
7899
7577df77ba95 character encodings - first attempt
Claus Gittinger <cg@exept.de>
parents: 7893
diff changeset
   796
    |rel|
7577df77ba95 character encodings - first attempt
Claus Gittinger <cg@exept.de>
parents: 7893
diff changeset
   797
7912
fbbb59645576 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7909
diff changeset
   798
    rel := self mapFileURL1_relativePathName.
fbbb59645576 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7909
diff changeset
   799
    rel isNil ifTrue:[
7932
ee233bf44df5 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7924
diff changeset
   800
	^ nil
7912
fbbb59645576 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7909
diff changeset
   801
    ].
7899
7577df77ba95 character encodings - first attempt
Claus Gittinger <cg@exept.de>
parents: 7893
diff changeset
   802
    ^ 'http://www.unicode.org/Public/MAPPINGS/' , rel
7577df77ba95 character encodings - first attempt
Claus Gittinger <cg@exept.de>
parents: 7893
diff changeset
   803
!
7577df77ba95 character encodings - first attempt
Claus Gittinger <cg@exept.de>
parents: 7893
diff changeset
   804
7892
149a145e871c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   805
mappingURL2
149a145e871c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   806
    "raise an error: must be redefined in concrete subclass(es)"
7899
7577df77ba95 character encodings - first attempt
Claus Gittinger <cg@exept.de>
parents: 7893
diff changeset
   807
    
7577df77ba95 character encodings - first attempt
Claus Gittinger <cg@exept.de>
parents: 7893
diff changeset
   808
    |rel|
7577df77ba95 character encodings - first attempt
Claus Gittinger <cg@exept.de>
parents: 7893
diff changeset
   809
7912
fbbb59645576 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7909
diff changeset
   810
    rel := self mapFileURL2_relativePathName.
fbbb59645576 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7909
diff changeset
   811
    rel isNil ifTrue:[
7932
ee233bf44df5 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7924
diff changeset
   812
	^ nil
7912
fbbb59645576 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7909
diff changeset
   813
    ].
7899
7577df77ba95 character encodings - first attempt
Claus Gittinger <cg@exept.de>
parents: 7893
diff changeset
   814
    ^ 'http://std.dkuug.dk/i18n/charmaps/' , rel
7892
149a145e871c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   815
! !
149a145e871c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   816
7899
7577df77ba95 character encodings - first attempt
Claus Gittinger <cg@exept.de>
parents: 7893
diff changeset
   817
!CharacterEncoder class methodsFor:'queries'!
7577df77ba95 character encodings - first attempt
Claus Gittinger <cg@exept.de>
parents: 7893
diff changeset
   818
7938
a53aae4a05bb *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7932
diff changeset
   819
isEncoding:subSetEncodingArg subSetOf:superSetEncodingArg
7994
42b5face56fb *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7986
diff changeset
   820
    "return true, if superSetEncoding encoding includes all characters of subSetEncoding.
42b5face56fb *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7986
diff changeset
   821
     (this means: characters are included - not that they have the same encoding)"
7938
a53aae4a05bb *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7932
diff changeset
   822
a53aae4a05bb *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7932
diff changeset
   823
    |subSetEncoding superSetEncoding|
a53aae4a05bb *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7932
diff changeset
   824
a53aae4a05bb *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7932
diff changeset
   825
    subSetEncodingArg = superSetEncodingArg ifTrue:[^ true].
a53aae4a05bb *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7932
diff changeset
   826
    subSetEncoding := subSetEncodingArg asLowercase.
a53aae4a05bb *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7932
diff changeset
   827
    superSetEncoding := superSetEncodingArg asLowercase.
a53aae4a05bb *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7932
diff changeset
   828
a53aae4a05bb *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7932
diff changeset
   829
    (subSetEncoding match:superSetEncoding) ifTrue:[^ true].
a53aae4a05bb *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7932
diff changeset
   830
a53aae4a05bb *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7932
diff changeset
   831
    (('iso10646*' match:superSetEncoding) or:[superSetEncoding = 'unicode']) ifTrue:[
8168
8f8da8bb046d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8156
diff changeset
   832
        ('ms-*' match:subSetEncoding) ifTrue:[^ true].
8f8da8bb046d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8156
diff changeset
   833
        ('ascii*' match:subSetEncoding) ifTrue:[^ true].
8f8da8bb046d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8156
diff changeset
   834
        ('iso8859*' match:subSetEncoding) ifTrue:[^ true].
8f8da8bb046d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8156
diff changeset
   835
        ('jis*' match:subSetEncoding) ifTrue:[^ true].
8f8da8bb046d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8156
diff changeset
   836
        ('koi8*' match:subSetEncoding) ifTrue:[^ true].
8f8da8bb046d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8156
diff changeset
   837
        ('ksc*' match:subSetEncoding) ifTrue:[^ true].
8f8da8bb046d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8156
diff changeset
   838
        ('big*' match:subSetEncoding) ifTrue:[^ true].
8f8da8bb046d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8156
diff changeset
   839
        ('cns*' match:subSetEncoding) ifTrue:[^ true].
8f8da8bb046d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8156
diff changeset
   840
        ('gb2312*' match:subSetEncoding) ifTrue:[^ true].
7938
a53aae4a05bb *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7932
diff changeset
   841
    ].
a53aae4a05bb *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7932
diff changeset
   842
a53aae4a05bb *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7932
diff changeset
   843
    "/ if the subSet is iso8859-*, that means ascii (i.e. the lower 7 bits of iso8859 only).
a53aae4a05bb *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7932
diff changeset
   844
    ((subSetEncoding = 'iso8859*') or:[subSetEncoding = 'iso8859-*']) ifTrue:[
8168
8f8da8bb046d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8156
diff changeset
   845
        ('ascii*' match:superSetEncoding) ifTrue:[^ true].
8f8da8bb046d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8156
diff changeset
   846
        ('ms-ansi*' match:superSetEncoding) ifTrue:[^ true].
7938
a53aae4a05bb *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7932
diff changeset
   847
    ].
a53aae4a05bb *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7932
diff changeset
   848
    (subSetEncoding = 'ascii') ifTrue:[
8168
8f8da8bb046d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8156
diff changeset
   849
        ('iso8859*' match:superSetEncoding) ifTrue:[^ true].
8f8da8bb046d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8156
diff changeset
   850
        ('ms-ansi*' match:superSetEncoding) ifTrue:[^ true].
7938
a53aae4a05bb *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7932
diff changeset
   851
    ].
a53aae4a05bb *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7932
diff changeset
   852
7923
e8286ccdf20c *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7922
diff changeset
   853
    "/ TODO: check the charSets mappingTables...
e8286ccdf20c *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7922
diff changeset
   854
    "/ self halt.
e8286ccdf20c *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7922
diff changeset
   855
    ^ false.
e8286ccdf20c *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7922
diff changeset
   856
!
e8286ccdf20c *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7922
diff changeset
   857
7919
92b61bef1b1a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7917
diff changeset
   858
nameOfDecodedCode
92b61bef1b1a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7917
diff changeset
   859
    "Most coders decode from their code into unicode / encode from unicode into their code.
92b61bef1b1a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7917
diff changeset
   860
     There are a few exceptions to this, though - these must redefine this."
92b61bef1b1a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7917
diff changeset
   861
    
92b61bef1b1a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7917
diff changeset
   862
    ^ #'unicode'
92b61bef1b1a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7917
diff changeset
   863
!
92b61bef1b1a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7917
diff changeset
   864
92b61bef1b1a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7917
diff changeset
   865
nameOfEncoding
7974
9905043988ee *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7973
diff changeset
   866
    ^ (self nameWithoutPrefix asLowercase copyReplaceAll:$_ with:$-) asSymbol
7919
92b61bef1b1a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7917
diff changeset
   867
!
92b61bef1b1a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7917
diff changeset
   868
7959
0276f0a46dd1 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7956
diff changeset
   869
supportedExternalEncodings
0276f0a46dd1 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7956
diff changeset
   870
    "return an array of arrays containing the names of supported
0276f0a46dd1 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7956
diff changeset
   871
     encodings which are supported for external resources (i.e. files).
0276f0a46dd1 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7956
diff changeset
   872
     The first element contains the internally used symbolic name,
0276f0a46dd1 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7956
diff changeset
   873
     the second contains a user-readable string (description).
0276f0a46dd1 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7956
diff changeset
   874
     More than one external name may be mapped onto the same symbolic."
0276f0a46dd1 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7956
diff changeset
   875
0276f0a46dd1 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7956
diff changeset
   876
    ^ #( 
8176
66d1004f1806 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8168
diff changeset
   877
         ('utf8'        'Unicode as 8Bit characters'    )  
66d1004f1806 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8168
diff changeset
   878
"/         ('utf7'        'Unicode as 7Bit characters'    ) 
66d1004f1806 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8168
diff changeset
   879
"/       nil
66d1004f1806 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8168
diff changeset
   880
         ('ascii'       'Common 7bit subset of iso8859' )
66d1004f1806 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8168
diff changeset
   881
         ('iso8859-1'   'Latin1'                        )
66d1004f1806 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8168
diff changeset
   882
         ('iso8859-2'   'Latin2'                        )
66d1004f1806 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8168
diff changeset
   883
         ('iso8859-3'   'Latin3'                        )
66d1004f1806 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8168
diff changeset
   884
         ('iso8859-4'   'Latin4'                        )
66d1004f1806 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8168
diff changeset
   885
         ('iso8859-5'   'Cyrillic'                      )
66d1004f1806 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8168
diff changeset
   886
         ('iso8859-6'   'Arabic'                        )
66d1004f1806 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8168
diff changeset
   887
         ('iso8859-7'   'Greek'                         )
66d1004f1806 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8168
diff changeset
   888
         ('iso8859-8'   'Hebrew'                        )
66d1004f1806 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8168
diff changeset
   889
"/       nil
66d1004f1806 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8168
diff changeset
   890
         ('koi7'        'Cyrillic (Old)'                )
66d1004f1806 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8168
diff changeset
   891
         ('koi8-r'      'Cyrillic'                      )
66d1004f1806 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8168
diff changeset
   892
         ('koi8-u'      'Cyrillic (Ukraine)'            )
66d1004f1806 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8168
diff changeset
   893
"/       nil
66d1004f1806 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8168
diff changeset
   894
         ('cp437'       'msdos US / codepage 437'       )
66d1004f1806 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8168
diff changeset
   895
         ('cp850'       'msdos Latin1 codepage 850'     )
66d1004f1806 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8168
diff changeset
   896
"/         ('mac'         'macintosh 8 bit'               )
66d1004f1806 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8168
diff changeset
   897
         ('next'        'NeXT 8 bit'                    )
66d1004f1806 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8168
diff changeset
   898
"/         ('hp'          'hpux 8 bit'                    )
66d1004f1806 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8168
diff changeset
   899
"/       nil
66d1004f1806 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8168
diff changeset
   900
         ('euc'         'EUC - extended unix code (japanese)'     )
66d1004f1806 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8168
diff changeset
   901
         ('jis7'        'JIS7 - jis 7bit escape codes (japanese)' )
66d1004f1806 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8168
diff changeset
   902
         ('iso-2022-jp' 'Same as jis 7bit'                        )
66d1004f1806 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8168
diff changeset
   903
         ('sjis'        'SJIS - shift jis 8bit codes (japanese)'  )
66d1004f1806 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8168
diff changeset
   904
"/       nil
66d1004f1806 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8168
diff changeset
   905
         ('gb'          'GB - mainland china'                   )
66d1004f1806 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8168
diff changeset
   906
         ('big5'        'BIG5 - taiwan'                         )
7959
0276f0a46dd1 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7956
diff changeset
   907
"/         ('ksc'         'korean'                        )
8186
ae97115c26f5 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8176
diff changeset
   908
         ('sgml'        'SGML (XML/HTML) character escapes'     )
7959
0276f0a46dd1 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7956
diff changeset
   909
       )
0276f0a46dd1 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7956
diff changeset
   910
!
0276f0a46dd1 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7956
diff changeset
   911
7947
16b2306f9bc9 utf8 - full 30 bit range
Claus Gittinger <cg@exept.de>
parents: 7942
diff changeset
   912
userFriendlyNameOfEncoding
7972
91aa73f89491 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7971
diff changeset
   913
    ^ self nameOfEncoding asUppercaseFirst
7899
7577df77ba95 character encodings - first attempt
Claus Gittinger <cg@exept.de>
parents: 7893
diff changeset
   914
! !
7577df77ba95 character encodings - first attempt
Claus Gittinger <cg@exept.de>
parents: 7893
diff changeset
   915
7912
fbbb59645576 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7909
diff changeset
   916
!CharacterEncoder class methodsFor:'testing'!
fbbb59645576 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7909
diff changeset
   917
fbbb59645576 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7909
diff changeset
   918
isAbstract
fbbb59645576 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7909
diff changeset
   919
    ^ self == CharacterEncoder
fbbb59645576 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7909
diff changeset
   920
! !
fbbb59645576 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7909
diff changeset
   921
7892
149a145e871c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   922
!CharacterEncoder methodsFor:'encoding & decoding'!
149a145e871c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   923
149a145e871c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   924
decode:anEncoding
149a145e871c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   925
    "given an integer in my encoding, return a unicode codePoint for it"
149a145e871c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   926
8118
efc99c0f68bc *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8114
diff changeset
   927
    self subclassResponsibility
7892
149a145e871c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   928
!
149a145e871c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   929
149a145e871c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   930
decodeString:anEncodedString
149a145e871c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   931
    "given a string in my encoding, return a unicode-string for it"
149a145e871c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   932
8150
ba9c6e587973 care for bitsPerCharacter change during encodeString/decodeString.
ca
parents: 8136
diff changeset
   933
    |newString myCode uniCodePoint bits|
8118
efc99c0f68bc *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8114
diff changeset
   934
efc99c0f68bc *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8114
diff changeset
   935
    newString := String new:(anEncodedString size).
8150
ba9c6e587973 care for bitsPerCharacter change during encodeString/decodeString.
ca
parents: 8136
diff changeset
   936
    bits := newString bitsPerCharacter.
8118
efc99c0f68bc *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8114
diff changeset
   937
8150
ba9c6e587973 care for bitsPerCharacter change during encodeString/decodeString.
ca
parents: 8136
diff changeset
   938
    1 to:anEncodedString size do:[:idx |
ba9c6e587973 care for bitsPerCharacter change during encodeString/decodeString.
ca
parents: 8136
diff changeset
   939
        uniCodePoint := (anEncodedString at:idx) codePoint.
ba9c6e587973 care for bitsPerCharacter change during encodeString/decodeString.
ca
parents: 8136
diff changeset
   940
        myCode := self decode:uniCodePoint.
ba9c6e587973 care for bitsPerCharacter change during encodeString/decodeString.
ca
parents: 8136
diff changeset
   941
        myCode > 16rFF ifTrue:[
ba9c6e587973 care for bitsPerCharacter change during encodeString/decodeString.
ca
parents: 8136
diff changeset
   942
            myCode > 16rFFFF ifTrue:[
ba9c6e587973 care for bitsPerCharacter change during encodeString/decodeString.
ca
parents: 8136
diff changeset
   943
                bits < 32 ifTrue:[
ba9c6e587973 care for bitsPerCharacter change during encodeString/decodeString.
ca
parents: 8136
diff changeset
   944
                    newString := Unicode32String fromString:newString.
ba9c6e587973 care for bitsPerCharacter change during encodeString/decodeString.
ca
parents: 8136
diff changeset
   945
                    bits := 32.
ba9c6e587973 care for bitsPerCharacter change during encodeString/decodeString.
ca
parents: 8136
diff changeset
   946
                ]
ba9c6e587973 care for bitsPerCharacter change during encodeString/decodeString.
ca
parents: 8136
diff changeset
   947
            ] ifFalse:[
ba9c6e587973 care for bitsPerCharacter change during encodeString/decodeString.
ca
parents: 8136
diff changeset
   948
                bits < 16 ifTrue:[
ba9c6e587973 care for bitsPerCharacter change during encodeString/decodeString.
ca
parents: 8136
diff changeset
   949
                    newString := Unicode16String fromString:newString.
ba9c6e587973 care for bitsPerCharacter change during encodeString/decodeString.
ca
parents: 8136
diff changeset
   950
                    bits := 16.
ba9c6e587973 care for bitsPerCharacter change during encodeString/decodeString.
ca
parents: 8136
diff changeset
   951
                ]
ba9c6e587973 care for bitsPerCharacter change during encodeString/decodeString.
ca
parents: 8136
diff changeset
   952
            ]
ba9c6e587973 care for bitsPerCharacter change during encodeString/decodeString.
ca
parents: 8136
diff changeset
   953
        ].
ba9c6e587973 care for bitsPerCharacter change during encodeString/decodeString.
ca
parents: 8136
diff changeset
   954
        newString at:idx put:(Character value:myCode).
8118
efc99c0f68bc *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8114
diff changeset
   955
    ].
efc99c0f68bc *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8114
diff changeset
   956
    ^ newString
7892
149a145e871c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   957
149a145e871c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   958
    "
149a145e871c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   959
     ISO8859_1 decodeString:'hello'
149a145e871c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   960
    "
149a145e871c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   961
!
149a145e871c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   962
149a145e871c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   963
encode:aCodePoint
149a145e871c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   964
    "given a codePoint in unicode, return a byte in my encoding for it"
149a145e871c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   965
8118
efc99c0f68bc *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8114
diff changeset
   966
    self subclassResponsibility
7892
149a145e871c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   967
!
149a145e871c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   968
149a145e871c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   969
encodeString:aUnicodeString
149a145e871c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   970
    "given a string in unicode, return a string in my encoding for it"
149a145e871c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   971
8150
ba9c6e587973 care for bitsPerCharacter change during encodeString/decodeString.
ca
parents: 8136
diff changeset
   972
    |newString myCode uniCodePoint bits|
8118
efc99c0f68bc *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8114
diff changeset
   973
8150
ba9c6e587973 care for bitsPerCharacter change during encodeString/decodeString.
ca
parents: 8136
diff changeset
   974
    newString := String new:(aUnicodeString size).
ba9c6e587973 care for bitsPerCharacter change during encodeString/decodeString.
ca
parents: 8136
diff changeset
   975
    bits := newString bitsPerCharacter.
ba9c6e587973 care for bitsPerCharacter change during encodeString/decodeString.
ca
parents: 8136
diff changeset
   976
8118
efc99c0f68bc *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8114
diff changeset
   977
    1 to:aUnicodeString size do:[:idx |
8150
ba9c6e587973 care for bitsPerCharacter change during encodeString/decodeString.
ca
parents: 8136
diff changeset
   978
        uniCodePoint := (aUnicodeString at:idx) codePoint.
ba9c6e587973 care for bitsPerCharacter change during encodeString/decodeString.
ca
parents: 8136
diff changeset
   979
        myCode := self encode:uniCodePoint.
ba9c6e587973 care for bitsPerCharacter change during encodeString/decodeString.
ca
parents: 8136
diff changeset
   980
        myCode > 16rFF ifTrue:[
ba9c6e587973 care for bitsPerCharacter change during encodeString/decodeString.
ca
parents: 8136
diff changeset
   981
            myCode > 16rFFFF ifTrue:[
ba9c6e587973 care for bitsPerCharacter change during encodeString/decodeString.
ca
parents: 8136
diff changeset
   982
                bits < 32 ifTrue:[
ba9c6e587973 care for bitsPerCharacter change during encodeString/decodeString.
ca
parents: 8136
diff changeset
   983
                    newString := Unicode32String fromString:newString.
ba9c6e587973 care for bitsPerCharacter change during encodeString/decodeString.
ca
parents: 8136
diff changeset
   984
                    bits := 32.
ba9c6e587973 care for bitsPerCharacter change during encodeString/decodeString.
ca
parents: 8136
diff changeset
   985
                ]
ba9c6e587973 care for bitsPerCharacter change during encodeString/decodeString.
ca
parents: 8136
diff changeset
   986
            ] ifFalse:[
ba9c6e587973 care for bitsPerCharacter change during encodeString/decodeString.
ca
parents: 8136
diff changeset
   987
                bits < 16 ifTrue:[
ba9c6e587973 care for bitsPerCharacter change during encodeString/decodeString.
ca
parents: 8136
diff changeset
   988
                    newString := Unicode16String fromString:newString.
ba9c6e587973 care for bitsPerCharacter change during encodeString/decodeString.
ca
parents: 8136
diff changeset
   989
                    bits := 16.
ba9c6e587973 care for bitsPerCharacter change during encodeString/decodeString.
ca
parents: 8136
diff changeset
   990
                ]
ba9c6e587973 care for bitsPerCharacter change during encodeString/decodeString.
ca
parents: 8136
diff changeset
   991
            ]
ba9c6e587973 care for bitsPerCharacter change during encodeString/decodeString.
ca
parents: 8136
diff changeset
   992
        ].
ba9c6e587973 care for bitsPerCharacter change during encodeString/decodeString.
ca
parents: 8136
diff changeset
   993
        newString at:idx put:(Character value:myCode).
8118
efc99c0f68bc *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8114
diff changeset
   994
    ].
efc99c0f68bc *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8114
diff changeset
   995
    ^ newString
7892
149a145e871c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   996
! !
149a145e871c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   997
7899
7577df77ba95 character encodings - first attempt
Claus Gittinger <cg@exept.de>
parents: 7893
diff changeset
   998
!CharacterEncoder methodsFor:'error handling'!
7577df77ba95 character encodings - first attempt
Claus Gittinger <cg@exept.de>
parents: 7893
diff changeset
   999
7577df77ba95 character encodings - first attempt
Claus Gittinger <cg@exept.de>
parents: 7893
diff changeset
  1000
decodingError 
7904
e3940bba2746 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7903
diff changeset
  1001
    "report an error that there is no unicode-codePoint for a given codePoint in this encoding.
e3940bba2746 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7903
diff changeset
  1002
     (which is unlikely) or that the encoding is undefined for that value
e3940bba2746 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7903
diff changeset
  1003
     (for example, holes in the ISO8859-3 encoding)"
e3940bba2746 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7903
diff changeset
  1004
7919
92b61bef1b1a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7917
diff changeset
  1005
    |badCodePoint sender|
92b61bef1b1a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7917
diff changeset
  1006
92b61bef1b1a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7917
diff changeset
  1007
    sender := thisContext sender.
92b61bef1b1a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7917
diff changeset
  1008
    ((sender selector == #encode:) or:[sender selector == #decode:]) ifFalse:[
8136
30b63b09b99a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8135
diff changeset
  1009
	badCodePoint := sender methodHome argAt:1
7919
92b61bef1b1a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7917
diff changeset
  1010
    ].
8062
4a229fcbc220 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8061
diff changeset
  1011
    ^ (EncodingError new)
8136
30b63b09b99a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8135
diff changeset
  1012
	defaultValue:(self defaultDecoderValue);
30b63b09b99a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8135
diff changeset
  1013
	parameter:badCodePoint;
30b63b09b99a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8135
diff changeset
  1014
	messageText:'invalid code'; 
30b63b09b99a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8135
diff changeset
  1015
	suspendedContext:sender;
30b63b09b99a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8135
diff changeset
  1016
	raiseRequest
7899
7577df77ba95 character encodings - first attempt
Claus Gittinger <cg@exept.de>
parents: 7893
diff changeset
  1017
!
7577df77ba95 character encodings - first attempt
Claus Gittinger <cg@exept.de>
parents: 7893
diff changeset
  1018
7577df77ba95 character encodings - first attempt
Claus Gittinger <cg@exept.de>
parents: 7893
diff changeset
  1019
defaultDecoderValue
7577df77ba95 character encodings - first attempt
Claus Gittinger <cg@exept.de>
parents: 7893
diff changeset
  1020
    "placed into a decoded string, in case there is no unicode codePoint
7577df77ba95 character encodings - first attempt
Claus Gittinger <cg@exept.de>
parents: 7893
diff changeset
  1021
     for a given encoded codePoint.
7904
e3940bba2746 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7903
diff changeset
  1022
     (typically 16rFFFF)."
7899
7577df77ba95 character encodings - first attempt
Claus Gittinger <cg@exept.de>
parents: 7893
diff changeset
  1023
    
7904
e3940bba2746 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7903
diff changeset
  1024
    ^ 16rFFFF
7899
7577df77ba95 character encodings - first attempt
Claus Gittinger <cg@exept.de>
parents: 7893
diff changeset
  1025
!
7577df77ba95 character encodings - first attempt
Claus Gittinger <cg@exept.de>
parents: 7893
diff changeset
  1026
7577df77ba95 character encodings - first attempt
Claus Gittinger <cg@exept.de>
parents: 7893
diff changeset
  1027
defaultEncoderValue
7577df77ba95 character encodings - first attempt
Claus Gittinger <cg@exept.de>
parents: 7893
diff changeset
  1028
    "placed into an encoded string, in case there is no codePoint
7577df77ba95 character encodings - first attempt
Claus Gittinger <cg@exept.de>
parents: 7893
diff changeset
  1029
     for a given unicode codePoint.
7577df77ba95 character encodings - first attempt
Claus Gittinger <cg@exept.de>
parents: 7893
diff changeset
  1030
     (typically $?)."
7577df77ba95 character encodings - first attempt
Claus Gittinger <cg@exept.de>
parents: 7893
diff changeset
  1031
8101
f7023a4735bf Use the ANSI-blessed #codePoint instead of deprecated #asciiValue
Stefan Vogel <sv@exept.de>
parents: 8087
diff changeset
  1032
    ^ $? codePoint
7899
7577df77ba95 character encodings - first attempt
Claus Gittinger <cg@exept.de>
parents: 7893
diff changeset
  1033
!
7577df77ba95 character encodings - first attempt
Claus Gittinger <cg@exept.de>
parents: 7893
diff changeset
  1034
7919
92b61bef1b1a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7917
diff changeset
  1035
encodingError
92b61bef1b1a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7917
diff changeset
  1036
    "report an error that some unicode-codePoint cannot be represented by this encoder"
92b61bef1b1a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7917
diff changeset
  1037
92b61bef1b1a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7917
diff changeset
  1038
    |badCodePoint sender|
7904
e3940bba2746 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7903
diff changeset
  1039
e3940bba2746 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7903
diff changeset
  1040
    sender := thisContext sender.
e3940bba2746 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7903
diff changeset
  1041
    ((sender selector == #encode:) or:[sender selector == #decode:]) ifFalse:[
8136
30b63b09b99a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8135
diff changeset
  1042
	badCodePoint := sender methodHome argAt:1
7904
e3940bba2746 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7903
diff changeset
  1043
    ].
8048
293c8178c6eb utf8 errors
Claus Gittinger <cg@exept.de>
parents: 8033
diff changeset
  1044
    ^ (EncodingError new)
8136
30b63b09b99a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8135
diff changeset
  1045
	defaultValue:(self defaultEncoderValue);
30b63b09b99a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8135
diff changeset
  1046
	parameter:badCodePoint;
30b63b09b99a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8135
diff changeset
  1047
	messageText:'unrepresentable unicode'; 
30b63b09b99a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8135
diff changeset
  1048
	suspendedContext:sender;
30b63b09b99a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8135
diff changeset
  1049
	raiseRequest
7899
7577df77ba95 character encodings - first attempt
Claus Gittinger <cg@exept.de>
parents: 7893
diff changeset
  1050
! !
7577df77ba95 character encodings - first attempt
Claus Gittinger <cg@exept.de>
parents: 7893
diff changeset
  1051
7972
91aa73f89491 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7971
diff changeset
  1052
!CharacterEncoder methodsFor:'printing'!
91aa73f89491 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7971
diff changeset
  1053
91aa73f89491 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7971
diff changeset
  1054
printOn:aStream
91aa73f89491 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7971
diff changeset
  1055
    aStream 
8136
30b63b09b99a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8135
diff changeset
  1056
	nextPutAll:(self nameOfDecodedCode);
30b63b09b99a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8135
diff changeset
  1057
	nextPutAll:'->';
30b63b09b99a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8135
diff changeset
  1058
	nextPutAll:(self nameOfEncoding)
7972
91aa73f89491 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7971
diff changeset
  1059
! !
91aa73f89491 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7971
diff changeset
  1060
7892
149a145e871c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1061
!CharacterEncoder methodsFor:'private'!
149a145e871c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1062
149a145e871c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1063
newString:size
149a145e871c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1064
    self subclassResponsibility
149a145e871c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1065
! !
149a145e871c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1066
7917
3649394bf5c0 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 7915
diff changeset
  1067
!CharacterEncoder methodsFor:'queries'!
3649394bf5c0 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 7915
diff changeset
  1068
3649394bf5c0 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 7915
diff changeset
  1069
isNullEncoder
3649394bf5c0 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 7915
diff changeset
  1070
    ^ false
7972
91aa73f89491 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7971
diff changeset
  1071
!
91aa73f89491 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7971
diff changeset
  1072
91aa73f89491 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7971
diff changeset
  1073
nameOfDecodedCode
91aa73f89491 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7971
diff changeset
  1074
    "Most coders decode from their code into unicode / encode from unicode into their code.
91aa73f89491 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7971
diff changeset
  1075
     There are a few exceptions to this, though - these must redefine this."
91aa73f89491 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7971
diff changeset
  1076
    
91aa73f89491 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7971
diff changeset
  1077
    ^ self class nameOfDecodedCode
91aa73f89491 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7971
diff changeset
  1078
!
91aa73f89491 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7971
diff changeset
  1079
91aa73f89491 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7971
diff changeset
  1080
nameOfEncoding
91aa73f89491 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7971
diff changeset
  1081
    ^ self class nameOfEncoding
91aa73f89491 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7971
diff changeset
  1082
!
91aa73f89491 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7971
diff changeset
  1083
91aa73f89491 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7971
diff changeset
  1084
userFriendlyNameOfEncoding
91aa73f89491 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7971
diff changeset
  1085
    ^ self class userFriendlyNameOfEncoding
7917
3649394bf5c0 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 7915
diff changeset
  1086
! !
3649394bf5c0 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 7915
diff changeset
  1087
7915
0b92b16542f6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7914
diff changeset
  1088
!CharacterEncoder::CompoundEncoder class methodsFor:'documentation'!
7914
86a3784b40dd *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7913
diff changeset
  1089
86a3784b40dd *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7913
diff changeset
  1090
documentation
86a3784b40dd *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7913
diff changeset
  1091
"
86a3784b40dd *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7913
diff changeset
  1092
    A compoundEncoder uses two real encoders;
86a3784b40dd *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7913
diff changeset
  1093
    to encode:
8136
30b63b09b99a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8135
diff changeset
  1094
	string -> decoder(encode) -> encoder -> result
7914
86a3784b40dd *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7913
diff changeset
  1095
    to decode:
8136
30b63b09b99a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8135
diff changeset
  1096
	string -> encoder -> decoder -> result
7956
c43ee9e00bab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7948
diff changeset
  1097
c43ee9e00bab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7948
diff changeset
  1098
    |e|
c43ee9e00bab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7948
diff changeset
  1099
c43ee9e00bab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7948
diff changeset
  1100
    e := CompoundEncoder new.
c43ee9e00bab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7948
diff changeset
  1101
    e encoder:ISO8859_5 decoder:KOI8_R.
c43ee9e00bab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7948
diff changeset
  1102
    e decode:16rB0.  'CYRILLIC CAPITAL LETTER A; 16rB0 in 8859-5; 16rE1 in KOI8-R'.
c43ee9e00bab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7948
diff changeset
  1103
    e encode:16rE1.  
7914
86a3784b40dd *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7913
diff changeset
  1104
"
86a3784b40dd *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7913
diff changeset
  1105
! !
86a3784b40dd *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7913
diff changeset
  1106
7915
0b92b16542f6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7914
diff changeset
  1107
!CharacterEncoder::CompoundEncoder methodsFor:'accessing'!
7914
86a3784b40dd *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7913
diff changeset
  1108
86a3784b40dd *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7913
diff changeset
  1109
encoder:encoderArg decoder:decoderArg  
86a3784b40dd *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7913
diff changeset
  1110
    "set instance variables (automatically generated)"
86a3784b40dd *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7913
diff changeset
  1111
86a3784b40dd *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7913
diff changeset
  1112
    decoder := decoderArg.
86a3784b40dd *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7913
diff changeset
  1113
    encoder := encoderArg.
86a3784b40dd *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7913
diff changeset
  1114
! !
86a3784b40dd *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7913
diff changeset
  1115
7915
0b92b16542f6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7914
diff changeset
  1116
!CharacterEncoder::CompoundEncoder methodsFor:'encoding & decoding'!
7914
86a3784b40dd *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7913
diff changeset
  1117
7956
c43ee9e00bab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7948
diff changeset
  1118
decode:aCode
c43ee9e00bab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7948
diff changeset
  1119
    ^ decoder encode:(encoder decode:aCode)
c43ee9e00bab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7948
diff changeset
  1120
!
c43ee9e00bab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7948
diff changeset
  1121
c43ee9e00bab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7948
diff changeset
  1122
decodeString:aString
c43ee9e00bab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7948
diff changeset
  1123
    ^ decoder encodeString:(encoder decodeString:aString)
c43ee9e00bab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7948
diff changeset
  1124
!
c43ee9e00bab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7948
diff changeset
  1125
7914
86a3784b40dd *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7913
diff changeset
  1126
encode:aCode
86a3784b40dd *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7913
diff changeset
  1127
    ^ encoder encode:(decoder decode:aCode)
86a3784b40dd *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7913
diff changeset
  1128
!
86a3784b40dd *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7913
diff changeset
  1129
86a3784b40dd *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7913
diff changeset
  1130
encodeString:aString
86a3784b40dd *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7913
diff changeset
  1131
    ^ encoder encodeString:(decoder decodeString:aString)
86a3784b40dd *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7913
diff changeset
  1132
! !
86a3784b40dd *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7913
diff changeset
  1133
7972
91aa73f89491 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7971
diff changeset
  1134
!CharacterEncoder::CompoundEncoder methodsFor:'printing'!
91aa73f89491 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7971
diff changeset
  1135
91aa73f89491 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7971
diff changeset
  1136
printOn:aStream
91aa73f89491 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7971
diff changeset
  1137
    aStream 
8136
30b63b09b99a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8135
diff changeset
  1138
	nextPutAll:(decoder nameOfEncoding);
30b63b09b99a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8135
diff changeset
  1139
	nextPutAll:'->'.
7972
91aa73f89491 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7971
diff changeset
  1140
"/        nextPutAll:(decoder nameOfDecodedCode);
91aa73f89491 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7971
diff changeset
  1141
"/        nextPutAll:'->';
91aa73f89491 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7971
diff changeset
  1142
"/        nextPutAll:(encoder nameOfEncoding)
91aa73f89491 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7971
diff changeset
  1143
    encoder printOn:aStream
91aa73f89491 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7971
diff changeset
  1144
! !
91aa73f89491 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7971
diff changeset
  1145
7932
ee233bf44df5 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7924
diff changeset
  1146
!CharacterEncoder::DefaultEncoder class methodsFor:'documentation'!
ee233bf44df5 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7924
diff changeset
  1147
ee233bf44df5 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7924
diff changeset
  1148
documentation
ee233bf44df5 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7924
diff changeset
  1149
"
7972
91aa73f89491 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7971
diff changeset
  1150
    That is only a dummy for ST80 compatibility
7932
ee233bf44df5 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7924
diff changeset
  1151
"
ee233bf44df5 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7924
diff changeset
  1152
! !
ee233bf44df5 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7924
diff changeset
  1153
7915
0b92b16542f6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7914
diff changeset
  1154
!CharacterEncoder::InverseEncoder class methodsFor:'documentation'!
7914
86a3784b40dd *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7913
diff changeset
  1155
86a3784b40dd *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7913
diff changeset
  1156
documentation
86a3784b40dd *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7913
diff changeset
  1157
"
86a3784b40dd *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7913
diff changeset
  1158
    An inverseEncoder does the inverse - i.e. encode is really a decode
86a3784b40dd *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7913
diff changeset
  1159
    and decode is really an encode.
86a3784b40dd *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7913
diff changeset
  1160
"
86a3784b40dd *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7913
diff changeset
  1161
! !
86a3784b40dd *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7913
diff changeset
  1162
7915
0b92b16542f6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7914
diff changeset
  1163
!CharacterEncoder::InverseEncoder methodsFor:'accessing'!
7914
86a3784b40dd *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7913
diff changeset
  1164
86a3784b40dd *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7913
diff changeset
  1165
decoder:something
86a3784b40dd *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7913
diff changeset
  1166
    decoder := something.
86a3784b40dd *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7913
diff changeset
  1167
! !
86a3784b40dd *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7913
diff changeset
  1168
7915
0b92b16542f6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7914
diff changeset
  1169
!CharacterEncoder::InverseEncoder methodsFor:'encoding & decoding'!
7914
86a3784b40dd *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7913
diff changeset
  1170
86a3784b40dd *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7913
diff changeset
  1171
decode:aCode
86a3784b40dd *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7913
diff changeset
  1172
    ^ decoder encode:aCode
86a3784b40dd *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7913
diff changeset
  1173
!
86a3784b40dd *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7913
diff changeset
  1174
86a3784b40dd *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7913
diff changeset
  1175
decodeString:aString
86a3784b40dd *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7913
diff changeset
  1176
    ^ decoder encodeString:aString
86a3784b40dd *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7913
diff changeset
  1177
!
86a3784b40dd *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7913
diff changeset
  1178
86a3784b40dd *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7913
diff changeset
  1179
encode:aCode
86a3784b40dd *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7913
diff changeset
  1180
    ^ decoder decode:aCode
86a3784b40dd *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7913
diff changeset
  1181
!
86a3784b40dd *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7913
diff changeset
  1182
86a3784b40dd *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7913
diff changeset
  1183
encodeString:aString
86a3784b40dd *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7913
diff changeset
  1184
    ^ decoder decodeString:aString
86a3784b40dd *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7913
diff changeset
  1185
! !
86a3784b40dd *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7913
diff changeset
  1186
7972
91aa73f89491 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7971
diff changeset
  1187
!CharacterEncoder::InverseEncoder methodsFor:'printing'!
91aa73f89491 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7971
diff changeset
  1188
91aa73f89491 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7971
diff changeset
  1189
printOn:aStream
91aa73f89491 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7971
diff changeset
  1190
    aStream 
8136
30b63b09b99a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8135
diff changeset
  1191
	nextPutAll:(decoder nameOfEncoding);
30b63b09b99a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8135
diff changeset
  1192
	nextPutAll:'->';
30b63b09b99a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8135
diff changeset
  1193
	nextPutAll:(decoder nameOfDecodedCode)
7972
91aa73f89491 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7971
diff changeset
  1194
! !
91aa73f89491 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7971
diff changeset
  1195
7915
0b92b16542f6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7914
diff changeset
  1196
!CharacterEncoder::NullEncoder class methodsFor:'documentation'!
7914
86a3784b40dd *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7913
diff changeset
  1197
86a3784b40dd *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7913
diff changeset
  1198
documentation
86a3784b40dd *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7913
diff changeset
  1199
"
86a3784b40dd *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7913
diff changeset
  1200
    A NullEncoder does nothing.
86a3784b40dd *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7913
diff changeset
  1201
"
86a3784b40dd *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7913
diff changeset
  1202
! !
86a3784b40dd *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7913
diff changeset
  1203
7915
0b92b16542f6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7914
diff changeset
  1204
!CharacterEncoder::NullEncoder methodsFor:'encoding & decoding'!
7899
7577df77ba95 character encodings - first attempt
Claus Gittinger <cg@exept.de>
parents: 7893
diff changeset
  1205
7577df77ba95 character encodings - first attempt
Claus Gittinger <cg@exept.de>
parents: 7893
diff changeset
  1206
decode:aCode
7577df77ba95 character encodings - first attempt
Claus Gittinger <cg@exept.de>
parents: 7893
diff changeset
  1207
    ^ aCode
7577df77ba95 character encodings - first attempt
Claus Gittinger <cg@exept.de>
parents: 7893
diff changeset
  1208
!
7577df77ba95 character encodings - first attempt
Claus Gittinger <cg@exept.de>
parents: 7893
diff changeset
  1209
7577df77ba95 character encodings - first attempt
Claus Gittinger <cg@exept.de>
parents: 7893
diff changeset
  1210
decodeString:aString
7577df77ba95 character encodings - first attempt
Claus Gittinger <cg@exept.de>
parents: 7893
diff changeset
  1211
    ^ aString
7577df77ba95 character encodings - first attempt
Claus Gittinger <cg@exept.de>
parents: 7893
diff changeset
  1212
!
7577df77ba95 character encodings - first attempt
Claus Gittinger <cg@exept.de>
parents: 7893
diff changeset
  1213
7577df77ba95 character encodings - first attempt
Claus Gittinger <cg@exept.de>
parents: 7893
diff changeset
  1214
encode:aCode
7577df77ba95 character encodings - first attempt
Claus Gittinger <cg@exept.de>
parents: 7893
diff changeset
  1215
    ^ aCode
7577df77ba95 character encodings - first attempt
Claus Gittinger <cg@exept.de>
parents: 7893
diff changeset
  1216
!
7577df77ba95 character encodings - first attempt
Claus Gittinger <cg@exept.de>
parents: 7893
diff changeset
  1217
7577df77ba95 character encodings - first attempt
Claus Gittinger <cg@exept.de>
parents: 7893
diff changeset
  1218
encodeString:aString
7577df77ba95 character encodings - first attempt
Claus Gittinger <cg@exept.de>
parents: 7893
diff changeset
  1219
    ^ aString
7577df77ba95 character encodings - first attempt
Claus Gittinger <cg@exept.de>
parents: 7893
diff changeset
  1220
! !
7577df77ba95 character encodings - first attempt
Claus Gittinger <cg@exept.de>
parents: 7893
diff changeset
  1221
7917
3649394bf5c0 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 7915
diff changeset
  1222
!CharacterEncoder::NullEncoder methodsFor:'queries'!
3649394bf5c0 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 7915
diff changeset
  1223
3649394bf5c0 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 7915
diff changeset
  1224
isNullEncoder
3649394bf5c0 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 7915
diff changeset
  1225
    ^ true
3649394bf5c0 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 7915
diff changeset
  1226
! !
3649394bf5c0 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 7915
diff changeset
  1227
7915
0b92b16542f6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7914
diff changeset
  1228
!CharacterEncoder::OtherEncoding class methodsFor:'private'!
7892
149a145e871c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1229
149a145e871c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1230
flushCode
149a145e871c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1231
!
149a145e871c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1232
149a145e871c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1233
generateEncoderCode
149a145e871c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1234
! !
149a145e871c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1235
7919
92b61bef1b1a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7917
diff changeset
  1236
!CharacterEncoder::TwoStepEncoder class methodsFor:'documentation'!
92b61bef1b1a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7917
diff changeset
  1237
92b61bef1b1a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7917
diff changeset
  1238
documentation
92b61bef1b1a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7917
diff changeset
  1239
"
92b61bef1b1a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7917
diff changeset
  1240
    A twoStepEncoder uses two real encoders;
92b61bef1b1a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7917
diff changeset
  1241
    to encode:
7932
ee233bf44df5 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7924
diff changeset
  1242
	string -> encoder1(encode) -> encoder2(encode) -> result
7919
92b61bef1b1a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7917
diff changeset
  1243
    to decode:
7932
ee233bf44df5 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7924
diff changeset
  1244
	string -> encoder2(decode) -> encoder1(decode) -> result
7919
92b61bef1b1a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7917
diff changeset
  1245
"
92b61bef1b1a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7917
diff changeset
  1246
! !
92b61bef1b1a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7917
diff changeset
  1247
92b61bef1b1a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7917
diff changeset
  1248
!CharacterEncoder::TwoStepEncoder methodsFor:'accessing'!
92b61bef1b1a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7917
diff changeset
  1249
92b61bef1b1a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7917
diff changeset
  1250
encoder1:encoder1Arg encoder2:encoder2Arg
92b61bef1b1a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7917
diff changeset
  1251
    "set instance variables (automatically generated)"
92b61bef1b1a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7917
diff changeset
  1252
92b61bef1b1a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7917
diff changeset
  1253
    encoder1 := encoder1Arg.
92b61bef1b1a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7917
diff changeset
  1254
    encoder2 := encoder2Arg.
92b61bef1b1a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7917
diff changeset
  1255
! !
92b61bef1b1a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7917
diff changeset
  1256
92b61bef1b1a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7917
diff changeset
  1257
!CharacterEncoder::TwoStepEncoder methodsFor:'encoding & decoding'!
92b61bef1b1a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7917
diff changeset
  1258
92b61bef1b1a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7917
diff changeset
  1259
decode:aCode
92b61bef1b1a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7917
diff changeset
  1260
    ^ encoder1 decode:(encoder2 decode:aCode)
92b61bef1b1a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7917
diff changeset
  1261
!
92b61bef1b1a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7917
diff changeset
  1262
92b61bef1b1a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7917
diff changeset
  1263
decodeString:aString
92b61bef1b1a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7917
diff changeset
  1264
    ^ encoder1 decodeString:(encoder2 decodeString:aString)
92b61bef1b1a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7917
diff changeset
  1265
!
92b61bef1b1a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7917
diff changeset
  1266
92b61bef1b1a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7917
diff changeset
  1267
encode:aCode
92b61bef1b1a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7917
diff changeset
  1268
    ^ encoder2 encode:(encoder1 encode:aCode)
92b61bef1b1a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7917
diff changeset
  1269
!
92b61bef1b1a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7917
diff changeset
  1270
92b61bef1b1a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7917
diff changeset
  1271
encodeString:aString
92b61bef1b1a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7917
diff changeset
  1272
    ^ encoder2 encodeString:(encoder1 encodeString:aString)
92b61bef1b1a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7917
diff changeset
  1273
! !
92b61bef1b1a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7917
diff changeset
  1274
7972
91aa73f89491 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7971
diff changeset
  1275
!CharacterEncoder::TwoStepEncoder methodsFor:'printing'!
91aa73f89491 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7971
diff changeset
  1276
91aa73f89491 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7971
diff changeset
  1277
printOn:aStream
91aa73f89491 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7971
diff changeset
  1278
    aStream 
8136
30b63b09b99a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8135
diff changeset
  1279
	nextPutAll:(encoder1 nameOfDecodedCode);
30b63b09b99a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8135
diff changeset
  1280
	nextPutAll:'->';
30b63b09b99a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8135
diff changeset
  1281
	nextPutAll:(encoder1 nameOfEncoding);
30b63b09b99a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8135
diff changeset
  1282
	nextPutAll:'->';
30b63b09b99a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8135
diff changeset
  1283
	nextPutAll:(encoder2 nameOfEncoding)
7972
91aa73f89491 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7971
diff changeset
  1284
! !
91aa73f89491 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7971
diff changeset
  1285
7892
149a145e871c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1286
!CharacterEncoder class methodsFor:'documentation'!
149a145e871c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1287
149a145e871c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1288
version
8194
7027457dbe4f *** empty log message ***
ca
parents: 8190
diff changeset
  1289
    ^ '$Header: /cvs/stx/stx/libbasic/CharacterEncoder.st,v 1.78 2004-03-15 12:58:54 ca Exp $'
7899
7577df77ba95 character encodings - first attempt
Claus Gittinger <cg@exept.de>
parents: 7893
diff changeset
  1290
! !
7577df77ba95 character encodings - first attempt
Claus Gittinger <cg@exept.de>
parents: 7893
diff changeset
  1291
7577df77ba95 character encodings - first attempt
Claus Gittinger <cg@exept.de>
parents: 7893
diff changeset
  1292
CharacterEncoder initialize!