CharacterEncoderImplementations__ISO10646_to_UTF8_MAC.st
author Claus Gittinger <cg@exept.de>
Wed, 18 Feb 2015 18:56:03 +0100
changeset 17497 36ab19b73c1f
parent 17490 dd28d3bda290
child 17522 eea77b0b2c82
permissions -rw-r--r--
class: CharacterEncoderImplementations::ISO10646_to_UTF8_MAC added: #nameOfEncoding category of:
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
17490
dd28d3bda290 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     1
"{ Encoding: utf8 }"
dd28d3bda290 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     2
dd28d3bda290 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     3
"
dd28d3bda290 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     4
 COPYRIGHT (c) 2015 by eXept Software AG
dd28d3bda290 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     5
              All Rights Reserved
dd28d3bda290 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     6
dd28d3bda290 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     7
 This software is furnished under a license and may be used
dd28d3bda290 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     8
 only in accordance with the terms of that license and with the
dd28d3bda290 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     9
 inclusion of the above copyright notice.   This software may not
dd28d3bda290 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    10
 be provided or otherwise made available to, or used by, any
dd28d3bda290 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    11
 other person.  No title to or ownership of the software is
dd28d3bda290 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    12
 hereby transferred.
dd28d3bda290 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    13
"
dd28d3bda290 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    14
"{ Package: 'stx:libbasic' }"
dd28d3bda290 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    15
dd28d3bda290 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    16
"{ NameSpace: CharacterEncoderImplementations }"
dd28d3bda290 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    17
dd28d3bda290 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    18
ISO10646_to_UTF8 subclass:#ISO10646_to_UTF8_MAC
dd28d3bda290 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    19
	instanceVariableNames:''
dd28d3bda290 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    20
	classVariableNames:'AccentMap DecomposeMap'
dd28d3bda290 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    21
	poolDictionaries:''
dd28d3bda290 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    22
	category:'Collections-Text-Encodings'
dd28d3bda290 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    23
!
dd28d3bda290 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    24
dd28d3bda290 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    25
!ISO10646_to_UTF8_MAC class methodsFor:'documentation'!
dd28d3bda290 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    26
dd28d3bda290 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    27
copyright
dd28d3bda290 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    28
"
dd28d3bda290 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    29
 COPYRIGHT (c) 2015 by eXept Software AG
dd28d3bda290 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    30
              All Rights Reserved
dd28d3bda290 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    31
dd28d3bda290 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    32
 This software is furnished under a license and may be used
dd28d3bda290 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    33
 only in accordance with the terms of that license and with the
dd28d3bda290 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    34
 inclusion of the above copyright notice.   This software may not
dd28d3bda290 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    35
 be provided or otherwise made available to, or used by, any
dd28d3bda290 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    36
 other person.  No title to or ownership of the software is
dd28d3bda290 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    37
 hereby transferred.
dd28d3bda290 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    38
"
dd28d3bda290 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    39
!
dd28d3bda290 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    40
dd28d3bda290 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    41
documentation
dd28d3bda290 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    42
"
dd28d3bda290 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    43
    UTF-8 can encode some diacritical characters (umlauts) in multiple ways:
dd28d3bda290 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    44
        - either with a single uniode (e.g. ae -> ä -> &#228 -> C3 A4)
dd28d3bda290 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    45
        - or as so called 'Normalization Form canonical Decomposition', i.e. as a regular 'a' followed by a
dd28d3bda290 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    46
          combining diacritical mark (for example: acute).
dd28d3bda290 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    47
dd28d3bda290 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    48
    MAC OSX needs the second form for its filenames.
dd28d3bda290 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    49
    However, OSX does not decompose the ranges U+2000-U+2FFF, U+F900-U+FAFF and U+2F800-U+2FAFF.
dd28d3bda290 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    50
dd28d3bda290 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    51
    This is a q&d hack, to at least support the first page (latin1) characters.
dd28d3bda290 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    52
    Will be enhanced for the 2nd and 3rd unicode page, when I find time.
dd28d3bda290 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    53
dd28d3bda290 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    54
    [author:]
dd28d3bda290 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    55
        Claus Gittinger
dd28d3bda290 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    56
dd28d3bda290 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    57
    [instance variables:]
dd28d3bda290 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    58
dd28d3bda290 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    59
    [class variables:]
dd28d3bda290 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    60
dd28d3bda290 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    61
    [see also:]
dd28d3bda290 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    62
        http://developer.apple.com/library/mac/#qa/qa2001/qa1173.html
dd28d3bda290 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    63
dd28d3bda290 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    64
"
dd28d3bda290 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    65
! !
dd28d3bda290 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    66
dd28d3bda290 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    67
!ISO10646_to_UTF8_MAC class methodsFor:'initialization'!
dd28d3bda290 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    68
dd28d3bda290 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    69
initializeDecomposeMap
dd28d3bda290 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    70
    DecomposeMap := Dictionary new.
dd28d3bda290 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    71
dd28d3bda290 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    72
    DecomposeMap at:"À"  16rC0 put:#( 16r41 16r0300).
dd28d3bda290 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    73
    DecomposeMap at:"à" 16rE0 put:#( 16r61 16r0300).
dd28d3bda290 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    74
    DecomposeMap at:"Á"  16rC1 put:#( 16r41 16r0301).
dd28d3bda290 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    75
    DecomposeMap at:"á" 16rE1 put:#( 16r61 16r0301).
dd28d3bda290 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    76
    DecomposeMap at:"Â"  16rC2 put:#( 16r41 16r0302).
dd28d3bda290 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    77
    DecomposeMap at:"â" 16rE2 put:#( 16r61 16r0302).
dd28d3bda290 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    78
    DecomposeMap at:"Ã"  16rC3 put:#( 16r41 16r0303).
dd28d3bda290 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    79
    DecomposeMap at:"ã" 16rE3 put:#( 16r61 16r0303).
dd28d3bda290 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    80
    DecomposeMap at:"Ä"  16rC4 put:#( 16r41 16r0308).
dd28d3bda290 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    81
    DecomposeMap at:"ä" 16rE4 put:#( 16r61 16r0308).
dd28d3bda290 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    82
    DecomposeMap at:"Å"  16rC5 put:#( 16r41 16r030A).
dd28d3bda290 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    83
    DecomposeMap at:"å" 16rE5 put:#( 16r61 16r030A).
dd28d3bda290 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    84
dd28d3bda290 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    85
    DecomposeMap at:"È"  16rC8 put:#( 16r45 16r0300).
dd28d3bda290 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    86
    DecomposeMap at:"è" 16rE8 put:#( 16r65 16r0300).
dd28d3bda290 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    87
    DecomposeMap at:"É"  16rC9 put:#( 16r45 16r0301).
dd28d3bda290 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    88
    DecomposeMap at:"é" 16rE9 put:#( 16r65 16r0301).
dd28d3bda290 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    89
    DecomposeMap at:"Ê"  16rCA put:#( 16r45 16r0302).
dd28d3bda290 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    90
    DecomposeMap at:"ê" 16rEA put:#( 16r65 16r0302).
dd28d3bda290 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    91
    DecomposeMap at:"Ë"  16rCB put:#( 16r45 16r0308).
dd28d3bda290 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    92
    DecomposeMap at:"ë" 16rEB put:#( 16r65 16r0308).
dd28d3bda290 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    93
dd28d3bda290 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    94
    DecomposeMap at:"Ì"  16rCC put:#( 16r49 16r0300).
dd28d3bda290 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    95
    DecomposeMap at:"ì" 16rEC put:#( 16r69 16r0300).
dd28d3bda290 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    96
    DecomposeMap at:"í"  16rCD put:#( 16r49 16r0301).
dd28d3bda290 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    97
    DecomposeMap at:"í" 16rED put:#( 16r69 16r0301).
dd28d3bda290 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    98
    DecomposeMap at:"Î"  16rCE put:#( 16r49 16r0302).
dd28d3bda290 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    99
    DecomposeMap at:"î" 16rEE put:#( 16r69 16r0302).
dd28d3bda290 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   100
    DecomposeMap at:"Ï"  16rCF put:#( 16r49 16r0308).
dd28d3bda290 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   101
    DecomposeMap at:"ï" 16rEF put:#( 16r69 16r0308).
dd28d3bda290 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   102
dd28d3bda290 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   103
    DecomposeMap at:"Ñ"  16rD1 put:#( 16r4E 16r0303).
dd28d3bda290 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   104
    DecomposeMap at:"ñ" 16rF1 put:#( 16r6E 16r0303).
dd28d3bda290 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   105
dd28d3bda290 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   106
    DecomposeMap at:"Ò"  16rD2 put:#( 16r4F 16r0300).
dd28d3bda290 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   107
    DecomposeMap at:"ò" 16rF2 put:#( 16r6F 16r0300).
dd28d3bda290 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   108
    DecomposeMap at:"Ó"  16rD3 put:#( 16r4F 16r0301).
dd28d3bda290 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   109
    DecomposeMap at:"ó" 16rF3 put:#( 16r6F 16r0301).
dd28d3bda290 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   110
    DecomposeMap at:"Ô"  16rD4 put:#( 16r4F 16r0302).
dd28d3bda290 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   111
    DecomposeMap at:"ô" 16rF4 put:#( 16r6F 16r0302).
dd28d3bda290 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   112
    DecomposeMap at:"Õ"  16rD5 put:#( 16r4F 16r0303).
dd28d3bda290 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   113
    DecomposeMap at:"õ" 16rF5 put:#( 16r6F 16r0303).
dd28d3bda290 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   114
    DecomposeMap at:"Ö"  16rD6 put:#( 16r4F 16r0308).
dd28d3bda290 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   115
    DecomposeMap at:"ö" 16rF6 put:#( 16r6F 16r0308).
dd28d3bda290 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   116
dd28d3bda290 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   117
    DecomposeMap at:"Ù"  16rD9 put:#( 16r55 16r0300).
dd28d3bda290 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   118
    DecomposeMap at:"ù" 16rF9 put:#( 16r75 16r0300).
dd28d3bda290 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   119
    DecomposeMap at:"Ú"  16rDA put:#( 16r55 16r0301).
dd28d3bda290 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   120
    DecomposeMap at:"ú" 16rFA put:#( 16r75 16r0301).
dd28d3bda290 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   121
    DecomposeMap at:"Û"  16rDB put:#( 16r55 16r0302).
dd28d3bda290 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   122
    DecomposeMap at:"û" 16rDB put:#( 16r75 16r0302).
dd28d3bda290 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   123
    DecomposeMap at:"Ü"  16rDC put:#( 16r55 16r0308).
dd28d3bda290 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   124
    DecomposeMap at:"ü" 16rFC put:#( 16r75 16r0308).
dd28d3bda290 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   125
dd28d3bda290 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   126
    DecomposeMap at:"Ý"  16rDD put:#( 16r59 16r0301).
dd28d3bda290 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   127
    DecomposeMap at:"ý" 16rFD put:#( 16r79 16r0301).
dd28d3bda290 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   128
dd28d3bda290 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   129
    DecomposeMap at:"ÿ"  16rFF put:#( 16r79 16r0308).
dd28d3bda290 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   130
! !
dd28d3bda290 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   131
dd28d3bda290 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   132
!ISO10646_to_UTF8_MAC methodsFor:'encoding & decoding'!
dd28d3bda290 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   133
dd28d3bda290 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   134
compositionOf: baseChar with: diacriticalChar  to: outStream
dd28d3bda290 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   135
    "compose two characters into one
dd28d3bda290 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   136
     a + umlaut-diacritic-mark -> ä."
dd28d3bda290 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   137
dd28d3bda290 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   138
    |cp map i|
dd28d3bda290 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   139
dd28d3bda290 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   140
    cp := diacriticalChar codePoint.
dd28d3bda290 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   141
    cp == 16r0300  ifTrue:[
dd28d3bda290 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   142
        "/ accent grave
dd28d3bda290 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   143
        map := 'AÀaàEÈeèIÌiìoòOÒUÙuù'.
dd28d3bda290 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   144
    ] ifFalse:[ cp == 16r0301  ifTrue:[
dd28d3bda290 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   145
        "/ accent
dd28d3bda290 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   146
        map := 'AÁaáEÉeéIÍiíOÓoóUÚuúyýYÝ'.
dd28d3bda290 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   147
    ] ifFalse:[ cp == 16r0302  ifTrue:[
dd28d3bda290 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   148
        "/ circonflex
dd28d3bda290 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   149
        map := 'AÂaâEÊeêIÎiîOÔoôUÛuû'.
dd28d3bda290 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   150
    ] ifFalse:[ cp == 16r0303  ifTrue:[
dd28d3bda290 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   151
        "/ tilde
dd28d3bda290 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   152
        map := 'AÃaãNÑnñOÕoõ'.
dd28d3bda290 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   153
    ] ifFalse:[ cp == 16r0308  ifTrue:[
dd28d3bda290 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   154
        "/ umlaut
dd28d3bda290 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   155
        map := 'AÄaäOÖoöUÜuüIÏiïyÿ'.
dd28d3bda290 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   156
    ] ifFalse:[ cp == 16r030A  ifTrue:[
dd28d3bda290 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   157
        "/ ring
dd28d3bda290 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   158
        map := 'AÅaå'.
dd28d3bda290 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   159
    ]]]]]].
dd28d3bda290 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   160
    map notNil ifTrue:[
dd28d3bda290 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   161
        i := map indexOf: baseChar.
dd28d3bda290 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   162
        i ~~ 0 ifTrue:[
dd28d3bda290 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   163
            outStream nextPut: (map at:i+1).
dd28d3bda290 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   164
            ^ self.
dd28d3bda290 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   165
        ].
dd28d3bda290 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   166
    ].
dd28d3bda290 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   167
dd28d3bda290 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   168
    outStream nextPut: baseChar.
dd28d3bda290 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   169
    outStream nextPut: diacriticalChar.
dd28d3bda290 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   170
!
dd28d3bda290 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   171
dd28d3bda290 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   172
decodeString:aStringOrByteCollection
dd28d3bda290 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   173
    "return a Unicode string from the passed in UTF-8-MAC encoded string.
dd28d3bda290 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   174
     This is UTF-8 with compose-characters decomposed 
dd28d3bda290 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   175
     (i.e. as separate codes, not as single combined characters).
dd28d3bda290 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   176
dd28d3bda290 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   177
     For now, here is a hacked (hardwired knowledge) version, 
dd28d3bda290 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   178
     which will work for some european countries only...
dd28d3bda290 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   179
    "
dd28d3bda290 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   180
dd28d3bda290 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   181
    |s buff previous|
dd28d3bda290 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   182
dd28d3bda290 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   183
    s := super  decodeString:aStringOrByteCollection.
dd28d3bda290 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   184
    (s contains:[:char | char codePoint between:16r0300 and:16r030F]) ifTrue:[
dd28d3bda290 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   185
        buff := CharacterWriteStream on:''.
dd28d3bda290 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   186
        previous := nil.
dd28d3bda290 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   187
        s do:[:each |
dd28d3bda290 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   188
            (each codePoint between:16r0300 and:16r030F) ifTrue:[
dd28d3bda290 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   189
                self compositionOf:previous with:each to:buff.
dd28d3bda290 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   190
                previous := nil.
dd28d3bda290 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   191
            ] ifFalse:[
dd28d3bda290 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   192
                previous notNil ifTrue:[
dd28d3bda290 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   193
                    buff nextPut:previous.
dd28d3bda290 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   194
                ].
dd28d3bda290 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   195
                previous := each.
dd28d3bda290 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   196
            ].
dd28d3bda290 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   197
        ].
dd28d3bda290 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   198
        ^ buff contents.
dd28d3bda290 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   199
    ].
dd28d3bda290 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   200
    ^ s
dd28d3bda290 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   201
dd28d3bda290 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   202
    "
dd28d3bda290 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   203
     (ISO10646_to_UTF8 new encodeString:'aäoöuü') asByteArray   
dd28d3bda290 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   204
        -> #[97 195 164 111 195 182 117 195 188]
dd28d3bda290 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   205
dd28d3bda290 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   206
     (ISO10646_to_UTF8 new decodeString:
dd28d3bda290 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   207
            (ISO10646_to_UTF8 new encodeString:'aäoöuü') asByteArray)    
dd28d3bda290 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   208
dd28d3bda290 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   209
    (ISO10646_to_UTF8_MAC new encodeString:'aäoöuü') asByteArray 
dd28d3bda290 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   210
        -> #[97 97 204 136 111 111 204 136 117 117 204 136]  
dd28d3bda290 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   211
dd28d3bda290 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   212
     (ISO10646_to_UTF8_MAC new decodeString:
dd28d3bda290 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   213
            (ISO10646_to_UTF8_MAC new encodeString:'aäoöuü') asByteArray)    
dd28d3bda290 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   214
    "
dd28d3bda290 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   215
!
dd28d3bda290 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   216
dd28d3bda290 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   217
decompositionOf: codePointIn into:outBlockWithTwoArgs
dd28d3bda290 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   218
    "if required, decompose a diacritical character into a base character and a punctuation;
dd28d3bda290 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   219
     eg. ä -> a + umlaut-diacritic-mark.
dd28d3bda290 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   220
     Pass both as args to the given block.
dd28d3bda290 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   221
     For non diactit. chars, pass a nil diacrit-mark value"
dd28d3bda290 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   222
dd28d3bda290 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   223
    |entry|
dd28d3bda290 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   224
dd28d3bda290 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   225
    codePointIn < 16rC0 ifTrue:[ ^ false ].
dd28d3bda290 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   226
dd28d3bda290 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   227
    entry := DecomposeMap at:codePointIn ifAbsent:nil.
dd28d3bda290 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   228
    entry isNil ifTrue:[ ^ false ].
dd28d3bda290 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   229
dd28d3bda290 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   230
    outBlockWithTwoArgs value:(entry at:1) value:(entry at:2).
dd28d3bda290 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   231
    ^ true
dd28d3bda290 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   232
!
dd28d3bda290 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   233
dd28d3bda290 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   234
encodeString:aUnicodeString
dd28d3bda290 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   235
    "return the UTF-8-MAC representation of a aUnicodeString.
dd28d3bda290 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   236
     This is UTF-8 with compose-characters decompose (i.e. as separate codes, not as
dd28d3bda290 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   237
     single combined characters).
dd28d3bda290 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   238
dd28d3bda290 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   239
     For now, here is a hacked (hardwired knowledge) version, which should work
dd28d3bda290 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   240
     at least for some european countries...
dd28d3bda290 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   241
    "
dd28d3bda290 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   242
dd28d3bda290 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   243
    |gen s decomp codePoint composeCodePoint|
dd28d3bda290 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   244
dd28d3bda290 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   245
    DecomposeMap isNil ifTrue:[
dd28d3bda290 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   246
        self class initializeDecomposeMap
dd28d3bda290 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   247
    ].
dd28d3bda290 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   248
dd28d3bda290 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   249
    gen := 
dd28d3bda290 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   250
        [:codePointArg |
dd28d3bda290 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   251
            |codePoint "{Class: SmallInteger }" b1 b2 b3 b4 b5 v "{Class: SmallInteger }"|
dd28d3bda290 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   252
dd28d3bda290 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   253
            codePoint := codePointArg.
dd28d3bda290 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   254
            codePoint <= 16r7F ifTrue:[
dd28d3bda290 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   255
                s nextPut:(Character value:codePoint).
dd28d3bda290 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   256
            ] ifFalse:[
dd28d3bda290 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   257
                b1 := Character value:((codePoint bitAnd:16r3F) bitOr:2r10000000).
dd28d3bda290 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   258
                v := codePoint bitShift:-6.
dd28d3bda290 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   259
                v <= 16r1F ifTrue:[
dd28d3bda290 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   260
                    s nextPut:(Character value:(v bitOr:2r11000000)).
dd28d3bda290 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   261
                    s nextPut:b1.
dd28d3bda290 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   262
                ] ifFalse:[
dd28d3bda290 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   263
                    b2 := Character value:((v bitAnd:16r3F) bitOr:2r10000000).
dd28d3bda290 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   264
                    v := v bitShift:-6.
dd28d3bda290 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   265
                    v <= 16r0F ifTrue:[
dd28d3bda290 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   266
                        s nextPut:(Character value:(v bitOr:2r11100000)).
dd28d3bda290 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   267
                        s nextPut:b2; nextPut:b1.
dd28d3bda290 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   268
                    ] ifFalse:[
dd28d3bda290 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   269
                        b3 := Character value:((v bitAnd:16r3F) bitOr:2r10000000).
dd28d3bda290 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   270
                        v := v bitShift:-6.
dd28d3bda290 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   271
                        v <= 16r07 ifTrue:[
dd28d3bda290 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   272
                            s nextPut:(Character value:(v bitOr:2r11110000)).
dd28d3bda290 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   273
                            s nextPut:b3; nextPut:b2; nextPut:b1.
dd28d3bda290 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   274
                        ] ifFalse:[
dd28d3bda290 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   275
                            b4 := Character value:((v bitAnd:16r3F) bitOr:2r10000000).
dd28d3bda290 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   276
                            v := v bitShift:-6.
dd28d3bda290 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   277
                            v <= 16r03 ifTrue:[
dd28d3bda290 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   278
                                s nextPut:(Character value:(v bitOr:2r11111000)).
dd28d3bda290 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   279
                                s nextPut:b4; nextPut:b3; nextPut:b2; nextPut:b1.
dd28d3bda290 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   280
                            ] ifFalse:[
dd28d3bda290 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   281
                                b5 := Character value:((v bitAnd:16r3F) bitOr:2r10000000).
dd28d3bda290 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   282
                                v := v bitShift:-6.
dd28d3bda290 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   283
                                v <= 16r01 ifTrue:[
dd28d3bda290 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   284
                                    s nextPut:(Character value:(v bitOr:2r11111100)).
dd28d3bda290 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   285
                                    s nextPut:b5; nextPut:b4; nextPut:b3; nextPut:b2; nextPut:b1.
dd28d3bda290 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   286
                                ] ifFalse:[
dd28d3bda290 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   287
                                    "/ cannot happen - we only support up to 30 bit characters
dd28d3bda290 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   288
                                    self error:'ascii value > 31bit in utf8Encode'.
dd28d3bda290 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   289
                                ]
dd28d3bda290 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   290
                            ].
dd28d3bda290 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   291
                        ].
dd28d3bda290 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   292
                    ].
dd28d3bda290 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   293
                ].
dd28d3bda290 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   294
            ].
dd28d3bda290 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   295
        ].
dd28d3bda290 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   296
dd28d3bda290 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   297
    decomp := [:baseCodePointArg :composeCodePointArg | 
dd28d3bda290 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   298
                codePoint := baseCodePointArg. composeCodePoint := composeCodePointArg
dd28d3bda290 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   299
              ].
dd28d3bda290 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   300
dd28d3bda290 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   301
    s := WriteStream on:(String uninitializedNew:aUnicodeString size).
dd28d3bda290 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   302
    aUnicodeString do:[:eachCharacter |
dd28d3bda290 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   303
        |needExtra|
dd28d3bda290 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   304
dd28d3bda290 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   305
        codePoint := eachCharacter codePoint.
dd28d3bda290 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   306
        needExtra := self decompositionOf: codePoint into:decomp.
dd28d3bda290 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   307
        gen value:codePoint.
dd28d3bda290 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   308
        needExtra ifTrue:[
dd28d3bda290 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   309
            gen value:composeCodePoint
dd28d3bda290 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   310
        ].
dd28d3bda290 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   311
    ].
dd28d3bda290 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   312
dd28d3bda290 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   313
    ^ s contents
dd28d3bda290 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   314
dd28d3bda290 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   315
    "
dd28d3bda290 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   316
     (self encodeString:'hello') asByteArray                             #[104 101 108 108 111]
dd28d3bda290 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   317
     (self encodeString:(Character value:16r40) asString) asByteArray    #[64]
dd28d3bda290 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   318
     (self encodeString:(Character value:16r7F) asString) asByteArray    #[127]
dd28d3bda290 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   319
     (self encodeString:(Character value:16r80) asString) asByteArray    #[194 128]
dd28d3bda290 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   320
     (self encodeString:(Character value:16rFF) asString) asByteArray    #[195 191]
dd28d3bda290 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   321
dd28d3bda290 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   322
     (ISO10646_to_UTF8     new encodeString:'aäoöuü') asByteArray   
dd28d3bda290 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   323
        -> #[97 195 164 111 195 182 117 195 188]
dd28d3bda290 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   324
     (ISO10646_to_UTF8_MAC new encodeString:'aäoöuü') asByteArray 
dd28d3bda290 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   325
        -> #[97 97 204 136 111 111 204 136 117 117 204 136]  
dd28d3bda290 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   326
    "
dd28d3bda290 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   327
! !
dd28d3bda290 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   328
17497
36ab19b73c1f class: CharacterEncoderImplementations::ISO10646_to_UTF8_MAC
Claus Gittinger <cg@exept.de>
parents: 17490
diff changeset
   329
!ISO10646_to_UTF8_MAC methodsFor:'queries'!
36ab19b73c1f class: CharacterEncoderImplementations::ISO10646_to_UTF8_MAC
Claus Gittinger <cg@exept.de>
parents: 17490
diff changeset
   330
36ab19b73c1f class: CharacterEncoderImplementations::ISO10646_to_UTF8_MAC
Claus Gittinger <cg@exept.de>
parents: 17490
diff changeset
   331
nameOfEncoding
36ab19b73c1f class: CharacterEncoderImplementations::ISO10646_to_UTF8_MAC
Claus Gittinger <cg@exept.de>
parents: 17490
diff changeset
   332
    ^ #'utf8-mac'
36ab19b73c1f class: CharacterEncoderImplementations::ISO10646_to_UTF8_MAC
Claus Gittinger <cg@exept.de>
parents: 17490
diff changeset
   333
! !
36ab19b73c1f class: CharacterEncoderImplementations::ISO10646_to_UTF8_MAC
Claus Gittinger <cg@exept.de>
parents: 17490
diff changeset
   334
17490
dd28d3bda290 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   335
!ISO10646_to_UTF8_MAC class methodsFor:'documentation'!
dd28d3bda290 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   336
dd28d3bda290 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   337
version
17497
36ab19b73c1f class: CharacterEncoderImplementations::ISO10646_to_UTF8_MAC
Claus Gittinger <cg@exept.de>
parents: 17490
diff changeset
   338
    ^ '$Header: /cvs/stx/stx/libbasic/CharacterEncoderImplementations__ISO10646_to_UTF8_MAC.st,v 1.2 2015-02-18 17:56:03 cg Exp $'
17490
dd28d3bda290 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   339
!
dd28d3bda290 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   340
dd28d3bda290 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   341
version_CVS
17497
36ab19b73c1f class: CharacterEncoderImplementations::ISO10646_to_UTF8_MAC
Claus Gittinger <cg@exept.de>
parents: 17490
diff changeset
   342
    ^ '$Header: /cvs/stx/stx/libbasic/CharacterEncoderImplementations__ISO10646_to_UTF8_MAC.st,v 1.2 2015-02-18 17:56:03 cg Exp $'
17490
dd28d3bda290 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   343
! !
dd28d3bda290 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   344