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