CharacterEncoderImplementations__ISO10646_to_XMLUTF8.st
author Stefan Vogel <sv@exept.de>
Thu, 16 Apr 2015 18:28:45 +0200
branchexpecco_2_7_5
changeset 18220 361e98951d47
parent 15945 94b64f8a1abe
child 17496 4dacd778d9c9
permissions -rw-r--r--
Add methods for backward compatibilty with older sublasses
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
15945
94b64f8a1abe initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     1
"
94b64f8a1abe initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     2
 COPYRIGHT (c) 2006 by eXept Software AG
94b64f8a1abe initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     3
	      All Rights Reserved
94b64f8a1abe initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     4
94b64f8a1abe initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     5
 This software is furnished under a license and may be used
94b64f8a1abe initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     6
 only in accordance with the terms of that license and with the
94b64f8a1abe initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     7
 inclusion of the above copyright notice.   This software may not
94b64f8a1abe initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     8
 be provided or otherwise made available to, or used by, any
94b64f8a1abe initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     9
 other person.  No title to or ownership of the software is
94b64f8a1abe initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    10
 hereby transferred.
94b64f8a1abe initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    11
"
94b64f8a1abe initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    12
"{ Package: 'stx:libbasic' }"
94b64f8a1abe initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    13
94b64f8a1abe initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    14
"{ NameSpace: CharacterEncoderImplementations }"
94b64f8a1abe initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    15
94b64f8a1abe initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    16
ISO10646_to_UTF8 subclass:#ISO10646_to_XMLUTF8
94b64f8a1abe initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    17
	instanceVariableNames:''
94b64f8a1abe initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    18
	classVariableNames:'ReplacementCharacter'
94b64f8a1abe initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    19
	poolDictionaries:''
94b64f8a1abe initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    20
	category:'Collections-Text-Encodings'
94b64f8a1abe initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    21
!
94b64f8a1abe initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    22
94b64f8a1abe initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    23
!ISO10646_to_XMLUTF8 class methodsFor:'documentation'!
94b64f8a1abe initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    24
94b64f8a1abe initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    25
copyright
94b64f8a1abe initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    26
"
94b64f8a1abe initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    27
 COPYRIGHT (c) 2006 by eXept Software AG
94b64f8a1abe initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    28
	      All Rights Reserved
94b64f8a1abe initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    29
94b64f8a1abe initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    30
 This software is furnished under a license and may be used
94b64f8a1abe initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    31
 only in accordance with the terms of that license and with the
94b64f8a1abe initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    32
 inclusion of the above copyright notice.   This software may not
94b64f8a1abe initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    33
 be provided or otherwise made available to, or used by, any
94b64f8a1abe initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    34
 other person.  No title to or ownership of the software is
94b64f8a1abe initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    35
 hereby transferred.
94b64f8a1abe initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    36
"
94b64f8a1abe initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    37
!
94b64f8a1abe initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    38
94b64f8a1abe initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    39
documentation
94b64f8a1abe initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    40
"
94b64f8a1abe initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    41
    This encoder encodes characters into utf8 characters that may
94b64f8a1abe initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    42
    occur in XML document.
94b64f8a1abe initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    43
94b64f8a1abe initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    44
    Not all UTF characters are valid in XML, whatever encoding
94b64f8a1abe initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    45
    is used. For a reference, see 
94b64f8a1abe initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    46
94b64f8a1abe initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    47
      http://www.w3.org/TR/2000/REC-xml-20001006#NT-Char   
94b64f8a1abe initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    48
94b64f8a1abe initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    49
    Invalid characters are replaced by ReplacementCharacter
94b64f8a1abe initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    50
    with $? as default.
94b64f8a1abe initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    51
94b64f8a1abe initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    52
    [author:]
94b64f8a1abe initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    53
        Jan Vrany <jan.vrany@fit.cvut.cz>
94b64f8a1abe initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    54
94b64f8a1abe initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    55
    [instance variables:]
94b64f8a1abe initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    56
94b64f8a1abe initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    57
    [class variables:]
94b64f8a1abe initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    58
94b64f8a1abe initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    59
    [see also:]
94b64f8a1abe initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    60
        http://www.w3.org/TR/2000/REC-xml-20001006#NT-Char
94b64f8a1abe initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    61
94b64f8a1abe initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    62
"
94b64f8a1abe initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    63
! !
94b64f8a1abe initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    64
94b64f8a1abe initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    65
!ISO10646_to_XMLUTF8 class methodsFor:'initialization'!
94b64f8a1abe initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    66
94b64f8a1abe initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    67
initialize
94b64f8a1abe initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    68
    "Invoked at system start or when the class is dynamically loaded."
94b64f8a1abe initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    69
94b64f8a1abe initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    70
    ReplacementCharacter := $?.
94b64f8a1abe initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    71
94b64f8a1abe initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    72
    "Modified: / 30-06-2012 / 19:55:00 / Jan Vrany <jan.vrany@fit.cvut.cz>"
94b64f8a1abe initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    73
! !
94b64f8a1abe initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    74
94b64f8a1abe initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    75
!ISO10646_to_XMLUTF8 methodsFor:'encoding & decoding'!
94b64f8a1abe initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    76
94b64f8a1abe initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    77
encodeString:aUnicodeString
94b64f8a1abe initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    78
    "return the UTF-8 representation of a aUnicodeString.
94b64f8a1abe initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    79
     The resulting string contains only valid XML unicode
94b64f8a1abe initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    80
     characters. Invalid characters are replaced by a
94b64f8a1abe initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    81
     ReplacementCharacter. For details, please see
94b64f8a1abe initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    82
94b64f8a1abe initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    83
     http://www.w3.org/TR/2000/REC-xml-20001006#NT-Char
94b64f8a1abe initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    84
94b64f8a1abe initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    85
    "
94b64f8a1abe initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    86
94b64f8a1abe initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    87
    |s|
94b64f8a1abe initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    88
94b64f8a1abe initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    89
    "Copy-paste of superclass's method and tweaked. Not ideal, but
94b64f8a1abe initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    90
     but avoids 1 string copy"
94b64f8a1abe initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    91
94b64f8a1abe initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    92
    s := WriteStream on:(String uninitializedNew:aUnicodeString size).
94b64f8a1abe initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    93
    aUnicodeString do:[:eachCharacter |
94b64f8a1abe initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    94
        |codePoint b1 b2 b3 b4 b5 v "{Class: SmallInteger }"|
94b64f8a1abe initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    95
94b64f8a1abe initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    96
        codePoint := eachCharacter codePoint.
94b64f8a1abe initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    97
        (self isValidXMLunicode: codePoint) ifFalse:[
94b64f8a1abe initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    98
            codePoint := ReplacementCharacter codePoint.
94b64f8a1abe initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    99
        ].
94b64f8a1abe initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   100
94b64f8a1abe initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   101
        codePoint <= 16r7F ifTrue:[
94b64f8a1abe initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   102
            s nextPut:(Character value:codePoint).
94b64f8a1abe initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   103
        ] ifFalse:[
94b64f8a1abe initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   104
            b1 := Character value:((codePoint bitAnd:16r3F) bitOr:2r10000000).
94b64f8a1abe initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   105
            v := codePoint bitShift:-6.
94b64f8a1abe initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   106
            v <= 16r1F ifTrue:[
94b64f8a1abe initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   107
                s nextPut:(Character value:(v bitOr:2r11000000)).
94b64f8a1abe initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   108
                s nextPut:b1.
94b64f8a1abe initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   109
            ] ifFalse:[
94b64f8a1abe initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   110
                b2 := Character value:((v bitAnd:16r3F) bitOr:2r10000000).
94b64f8a1abe initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   111
                v := v bitShift:-6.
94b64f8a1abe initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   112
                v <= 16r0F ifTrue:[
94b64f8a1abe initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   113
                    s nextPut:(Character value:(v bitOr:2r11100000)).
94b64f8a1abe initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   114
                    s nextPut:b2; nextPut:b1.
94b64f8a1abe initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   115
                ] ifFalse:[
94b64f8a1abe initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   116
                    b3 := Character value:((v bitAnd:16r3F) bitOr:2r10000000).
94b64f8a1abe initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   117
                    v := v bitShift:-6.
94b64f8a1abe initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   118
                    v <= 16r07 ifTrue:[
94b64f8a1abe initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   119
                        s nextPut:(Character value:(v bitOr:2r11110000)).
94b64f8a1abe initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   120
                        s nextPut:b3; nextPut:b2; nextPut:b1.
94b64f8a1abe initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   121
                    ] ifFalse:[
94b64f8a1abe initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   122
                        b4 := Character value:((v bitAnd:16r3F) bitOr:2r10000000).
94b64f8a1abe initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   123
                        v := v bitShift:-6.
94b64f8a1abe initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   124
                        v <= 16r03 ifTrue:[
94b64f8a1abe initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   125
                            s nextPut:(Character value:(v bitOr:2r11111000)).
94b64f8a1abe initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   126
                            s nextPut:b4; nextPut:b3; nextPut:b2; nextPut:b1.
94b64f8a1abe initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   127
                        ] ifFalse:[
94b64f8a1abe initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   128
                            b5 := Character value:((v bitAnd:16r3F) bitOr:2r10000000).
94b64f8a1abe initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   129
                            v := v bitShift:-6.
94b64f8a1abe initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   130
                            v <= 16r01 ifTrue:[
94b64f8a1abe initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   131
                                s nextPut:(Character value:(v bitOr:2r11111100)).
94b64f8a1abe initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   132
                                s nextPut:b5; nextPut:b4; nextPut:b3; nextPut:b2; nextPut:b1.
94b64f8a1abe initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   133
                            ] ifFalse:[
94b64f8a1abe initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   134
                                "/ cannot happen - we only support up to 30 bit characters
94b64f8a1abe initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   135
                                self error:'ascii value > 31bit in utf8Encode'.
94b64f8a1abe initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   136
                            ]
94b64f8a1abe initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   137
                        ].
94b64f8a1abe initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   138
                    ].
94b64f8a1abe initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   139
                ].
94b64f8a1abe initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   140
            ].
94b64f8a1abe initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   141
        ].
94b64f8a1abe initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   142
    ].
94b64f8a1abe initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   143
94b64f8a1abe initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   144
    ^ s contents
94b64f8a1abe initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   145
94b64f8a1abe initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   146
    "
94b64f8a1abe initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   147
     (self encodeString:'hello') asByteArray                             #[104 101 108 108 111]
94b64f8a1abe initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   148
     (self encodeString:(Character value:16r40) asString) asByteArray    #[64]
94b64f8a1abe initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   149
     (self encodeString:(Character value:16r7F) asString) asByteArray    #[127]
94b64f8a1abe initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   150
     (self encodeString:(Character value:16r80) asString) asByteArray    #[194 128]
94b64f8a1abe initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   151
     (self encodeString:(Character value:16rFF) asString) asByteArray    #[195 191]
94b64f8a1abe initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   152
     (self encodeString:(Character value:16r100) asString) asByteArray   #[196 128]
94b64f8a1abe initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   153
     (self encodeString:(Character value:16r200) asString) asByteArray   #[200 128]
94b64f8a1abe initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   154
     (self encodeString:(Character value:16r400) asString) asByteArray   #[208 128]
94b64f8a1abe initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   155
     (self encodeString:(Character value:16r800) asString) asByteArray   #[224 160 128]
94b64f8a1abe initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   156
     (self encodeString:(Character value:16r1000) asString) asByteArray  #[225 128 128]
94b64f8a1abe initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   157
     (self encodeString:(Character value:16r2000) asString) asByteArray  #[226 128 128]
94b64f8a1abe initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   158
     (self encodeString:(Character value:16r4000) asString) asByteArray  #[228 128 128]
94b64f8a1abe initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   159
     (self encodeString:(Character value:16r8000) asString) asByteArray  #[232 128 128]
94b64f8a1abe initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   160
     (self encodeString:(Character value:16rFFFF) asString) asByteArray  #[239 191 191]
94b64f8a1abe initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   161
    "
94b64f8a1abe initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   162
94b64f8a1abe initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   163
    "Created: / 30-06-2012 / 20:07:43 / Jan Vrany <jan.vrany@fit.cvut.cz>"
94b64f8a1abe initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   164
! !
94b64f8a1abe initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   165
94b64f8a1abe initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   166
!ISO10646_to_XMLUTF8 methodsFor:'queries'!
94b64f8a1abe initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   167
94b64f8a1abe initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   168
isValidXMLunicode: codePoint
94b64f8a1abe initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   169
    "Returns true, if given codePoint (Integer!!!!!!) is
94b64f8a1abe initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   170
     valid XML unicode."
94b64f8a1abe initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   171
94b64f8a1abe initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   172
    codePoint == 16r0009 ifTrue:[ ^ true ].
94b64f8a1abe initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   173
    codePoint == 16r000A ifTrue:[ ^ true ].
94b64f8a1abe initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   174
    codePoint == 16r000D ifTrue:[ ^ true ].
94b64f8a1abe initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   175
    (codePoint between: 16r0020  and: 16rD7FF  ) ifTrue:[ ^ true ].
94b64f8a1abe initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   176
    (codePoint between: 16rE000  and: 16rFFFD  ) ifTrue:[ ^ true ].
94b64f8a1abe initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   177
    (codePoint between: 16r10000 and: 16r10FFFF) ifTrue:[ ^ true ].
94b64f8a1abe initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   178
94b64f8a1abe initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   179
    ^false.
94b64f8a1abe initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   180
94b64f8a1abe initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   181
    "Created: / 30-06-2012 / 20:11:16 / Jan Vrany <jan.vrany@fit.cvut.cz>"
94b64f8a1abe initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   182
! !
94b64f8a1abe initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   183
94b64f8a1abe initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   184
!ISO10646_to_XMLUTF8 class methodsFor:'documentation'!
94b64f8a1abe initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   185
94b64f8a1abe initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   186
version
94b64f8a1abe initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   187
    ^ '$Header: /cvs/stx/stx/libbasic/CharacterEncoderImplementations__ISO10646_to_XMLUTF8.st,v 1.1 2014-02-05 17:11:46 cg Exp $'
94b64f8a1abe initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   188
!
94b64f8a1abe initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   189
94b64f8a1abe initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   190
version_CVS
94b64f8a1abe initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   191
    ^ '$Header: /cvs/stx/stx/libbasic/CharacterEncoderImplementations__ISO10646_to_XMLUTF8.st,v 1.1 2014-02-05 17:11:46 cg Exp $'
94b64f8a1abe initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   192
! !
94b64f8a1abe initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   193
94b64f8a1abe initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   194
94b64f8a1abe initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   195
ISO10646_to_XMLUTF8 initialize!