CharacterEncoderImplementations__ISO10646_to_SGML.st
author Claus Gittinger <cg@exept.de>
Tue, 09 Jul 2019 20:55:17 +0200
changeset 24417 03b083548da2
parent 22477 5b8c1f5f8ffa
permissions -rw-r--r--
#REFACTORING by exept class: Smalltalk class changed: #recursiveInstallAutoloadedClassesFrom:rememberIn:maxLevels:noAutoload:packageTop:showSplashInLevels: Transcript showCR:(... bindWith:...) -> Transcript showCR:... with:...
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
22477
5b8c1f5f8ffa #REFACTORING by stefan
Stefan Vogel <sv@exept.de>
parents: 10108
diff changeset
     1
"{ Encoding: utf8 }"
5b8c1f5f8ffa #REFACTORING by stefan
Stefan Vogel <sv@exept.de>
parents: 10108
diff changeset
     2
8171
ac837a7ca3a3 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8170
diff changeset
     3
"
ac837a7ca3a3 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8170
diff changeset
     4
 COPYRIGHT (c) 2004 by eXept Software AG
ac837a7ca3a3 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8170
diff changeset
     5
              All Rights Reserved
ac837a7ca3a3 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8170
diff changeset
     6
ac837a7ca3a3 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8170
diff changeset
     7
 This software is furnished under a license and may be used
ac837a7ca3a3 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8170
diff changeset
     8
 only in accordance with the terms of that license and with the
ac837a7ca3a3 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8170
diff changeset
     9
 inclusion of the above copyright notice.   This software may not
ac837a7ca3a3 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8170
diff changeset
    10
 be provided or otherwise made available to, or used by, any
ac837a7ca3a3 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8170
diff changeset
    11
 other person.  No title to or ownership of the software is
ac837a7ca3a3 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8170
diff changeset
    12
 hereby transferred.
ac837a7ca3a3 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8170
diff changeset
    13
"
8170
ffa1ed9338ad initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    14
"{ Package: 'stx:libbasic' }"
ffa1ed9338ad initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    15
ffa1ed9338ad initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    16
"{ NameSpace: CharacterEncoderImplementations }"
ffa1ed9338ad initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    17
22477
5b8c1f5f8ffa #REFACTORING by stefan
Stefan Vogel <sv@exept.de>
parents: 10108
diff changeset
    18
VariableBytesEncoder subclass:#ISO10646_to_SGML
8170
ffa1ed9338ad initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    19
	instanceVariableNames:''
ffa1ed9338ad initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    20
	classVariableNames:''
ffa1ed9338ad initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    21
	poolDictionaries:''
ffa1ed9338ad initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    22
	category:'Collections-Text-Encodings'
ffa1ed9338ad initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    23
!
ffa1ed9338ad initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    24
8171
ac837a7ca3a3 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8170
diff changeset
    25
!ISO10646_to_SGML class methodsFor:'documentation'!
ac837a7ca3a3 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8170
diff changeset
    26
ac837a7ca3a3 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8170
diff changeset
    27
copyright
ac837a7ca3a3 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8170
diff changeset
    28
"
ac837a7ca3a3 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8170
diff changeset
    29
 COPYRIGHT (c) 2004 by eXept Software AG
ac837a7ca3a3 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8170
diff changeset
    30
              All Rights Reserved
ac837a7ca3a3 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8170
diff changeset
    31
ac837a7ca3a3 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8170
diff changeset
    32
 This software is furnished under a license and may be used
ac837a7ca3a3 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8170
diff changeset
    33
 only in accordance with the terms of that license and with the
ac837a7ca3a3 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8170
diff changeset
    34
 inclusion of the above copyright notice.   This software may not
ac837a7ca3a3 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8170
diff changeset
    35
 be provided or otherwise made available to, or used by, any
ac837a7ca3a3 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8170
diff changeset
    36
 other person.  No title to or ownership of the software is
ac837a7ca3a3 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8170
diff changeset
    37
 hereby transferred.
ac837a7ca3a3 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8170
diff changeset
    38
"
ac837a7ca3a3 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8170
diff changeset
    39
!
ac837a7ca3a3 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8170
diff changeset
    40
ac837a7ca3a3 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8170
diff changeset
    41
documentation
ac837a7ca3a3 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8170
diff changeset
    42
"
ac837a7ca3a3 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8170
diff changeset
    43
    Incomplete - only knows how to encode/decode escaped decimal-code characters
ac837a7ca3a3 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8170
diff changeset
    44
    (i.e. &#nnnn; )
ac837a7ca3a3 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8170
diff changeset
    45
ac837a7ca3a3 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8170
diff changeset
    46
    TODO:
ac837a7ca3a3 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8170
diff changeset
    47
        add all other characters
ac837a7ca3a3 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8170
diff changeset
    48
        reuse this code in XML and HTML processing code.
ac837a7ca3a3 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8170
diff changeset
    49
"
ac837a7ca3a3 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8170
diff changeset
    50
! !
8170
ffa1ed9338ad initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    51
ffa1ed9338ad initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    52
!ISO10646_to_SGML methodsFor:'encoding & decoding'!
ffa1ed9338ad initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    53
ffa1ed9338ad initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    54
decodeString:aStringOrByteCollection
ffa1ed9338ad initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    55
    "given a string in SGML encoding (i.e. with SGML escaped characters),
ffa1ed9338ad initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    56
     return a new string containing the same characters, in 16bit (or more) encoding.
ffa1ed9338ad initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    57
     Returns either a normal String, a TwoByteString or a FourByteString instance.
ffa1ed9338ad initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    58
     Only useful, when reading from external sources.
ffa1ed9338ad initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    59
     This only handles up-to 30bit characters."
ffa1ed9338ad initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    60
ffa1ed9338ad initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    61
    |nBits ch 
22477
5b8c1f5f8ffa #REFACTORING by stefan
Stefan Vogel <sv@exept.de>
parents: 10108
diff changeset
    62
     in out codePoint|
8170
ffa1ed9338ad initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    63
ffa1ed9338ad initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    64
    nBits := 8.
ffa1ed9338ad initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    65
    in := aStringOrByteCollection readStream.
22477
5b8c1f5f8ffa #REFACTORING by stefan
Stefan Vogel <sv@exept.de>
parents: 10108
diff changeset
    66
    out := CharacterWriteStream on:(String new:10).
8170
ffa1ed9338ad initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    67
    [in atEnd] whileFalse:[
ffa1ed9338ad initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    68
        ch := in next.
ffa1ed9338ad initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    69
        ch == $& ifTrue:[
ffa1ed9338ad initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    70
            in peekOrNil == $# ifTrue:[
ffa1ed9338ad initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    71
                in next.
ffa1ed9338ad initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    72
                codePoint := 0.
ffa1ed9338ad initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    73
                [ch := in peekOrNil.
ffa1ed9338ad initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    74
                 ch notNil and:[ch isDigit]
ffa1ed9338ad initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    75
                ] whileTrue:[
ffa1ed9338ad initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    76
                    codePoint := (codePoint * 10) + ch digitValue.
ffa1ed9338ad initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    77
                    in next.
ffa1ed9338ad initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    78
                ].
22477
5b8c1f5f8ffa #REFACTORING by stefan
Stefan Vogel <sv@exept.de>
parents: 10108
diff changeset
    79
                out nextPut:(Character codePoint:codePoint).
8170
ffa1ed9338ad initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    80
                in peekOrNil == $; ifTrue:[
ffa1ed9338ad initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    81
                    in next.
ffa1ed9338ad initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    82
                ]
ffa1ed9338ad initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    83
            ] ifFalse:[
ffa1ed9338ad initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    84
                out nextPut:ch
ffa1ed9338ad initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    85
            ]
ffa1ed9338ad initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    86
        ] ifFalse:[
ffa1ed9338ad initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    87
            out nextPut:ch
ffa1ed9338ad initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    88
        ].
ffa1ed9338ad initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    89
    ].
ffa1ed9338ad initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    90
    ^ out contents
ffa1ed9338ad initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    91
ffa1ed9338ad initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    92
    "
ffa1ed9338ad initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    93
     CharacterEncoderImplementations::ISO10646_to_SGML
ffa1ed9338ad initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    94
        decodeString:'&#1060;&#1072;&#1081;&#1083;' 
ffa1ed9338ad initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    95
ffa1ed9338ad initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    96
     CharacterEncoderImplementations::ISO10646_to_SGML
ffa1ed9338ad initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    97
        decodeString:'#197;&bn...'
ffa1ed9338ad initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    98
    "
ffa1ed9338ad initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    99
22477
5b8c1f5f8ffa #REFACTORING by stefan
Stefan Vogel <sv@exept.de>
parents: 10108
diff changeset
   100
    "Modified: / 17-01-2018 / 18:35:52 / stefan"
8170
ffa1ed9338ad initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   101
!
ffa1ed9338ad initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   102
ffa1ed9338ad initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   103
encodeString:aUnicodeString
10108
8e610353f2fa comments
Claus Gittinger <cg@exept.de>
parents: 8171
diff changeset
   104
    "return the SGML representation of aUnicodeString.
8170
ffa1ed9338ad initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   105
     The resulting string is only useful to be stored on some external file,
10108
8e610353f2fa comments
Claus Gittinger <cg@exept.de>
parents: 8171
diff changeset
   106
     not for being used inside ST/X."
8170
ffa1ed9338ad initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   107
22477
5b8c1f5f8ffa #REFACTORING by stefan
Stefan Vogel <sv@exept.de>
parents: 10108
diff changeset
   108
    |in out|
8170
ffa1ed9338ad initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   109
ffa1ed9338ad initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   110
    in := aUnicodeString readStream.
22477
5b8c1f5f8ffa #REFACTORING by stefan
Stefan Vogel <sv@exept.de>
parents: 10108
diff changeset
   111
    out := WriteStream on:(String new:aUnicodeString size + 10).
8170
ffa1ed9338ad initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   112
    [in atEnd] whileFalse:[
22477
5b8c1f5f8ffa #REFACTORING by stefan
Stefan Vogel <sv@exept.de>
parents: 10108
diff changeset
   113
        |ch codePoint|
5b8c1f5f8ffa #REFACTORING by stefan
Stefan Vogel <sv@exept.de>
parents: 10108
diff changeset
   114
8170
ffa1ed9338ad initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   115
        ch := in next.
ffa1ed9338ad initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   116
        codePoint := ch codePoint.
ffa1ed9338ad initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   117
        (codePoint between:16r20 and:16r7F) ifTrue:[
ffa1ed9338ad initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   118
            out nextPut:ch.
ffa1ed9338ad initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   119
        ] ifFalse:[
ffa1ed9338ad initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   120
            out nextPutAll:'&#'.
22477
5b8c1f5f8ffa #REFACTORING by stefan
Stefan Vogel <sv@exept.de>
parents: 10108
diff changeset
   121
            codePoint printOn:out.
5b8c1f5f8ffa #REFACTORING by stefan
Stefan Vogel <sv@exept.de>
parents: 10108
diff changeset
   122
            out nextPut:$;.
8170
ffa1ed9338ad initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   123
        ].
ffa1ed9338ad initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   124
    ].
ffa1ed9338ad initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   125
    ^ out contents
ffa1ed9338ad initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   126
ffa1ed9338ad initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   127
    "
ffa1ed9338ad initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   128
     CharacterEncoderImplementations::ISO10646_to_SGML
22477
5b8c1f5f8ffa #REFACTORING by stefan
Stefan Vogel <sv@exept.de>
parents: 10108
diff changeset
   129
        encodeString:'hello äöü' 
8170
ffa1ed9338ad initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   130
    "
10108
8e610353f2fa comments
Claus Gittinger <cg@exept.de>
parents: 8171
diff changeset
   131
8e610353f2fa comments
Claus Gittinger <cg@exept.de>
parents: 8171
diff changeset
   132
    "Modified: / 23-10-2006 / 13:25:27 / cg"
22477
5b8c1f5f8ffa #REFACTORING by stefan
Stefan Vogel <sv@exept.de>
parents: 10108
diff changeset
   133
    "Modified (format): / 17-01-2018 / 18:41:16 / stefan"
5b8c1f5f8ffa #REFACTORING by stefan
Stefan Vogel <sv@exept.de>
parents: 10108
diff changeset
   134
! !
5b8c1f5f8ffa #REFACTORING by stefan
Stefan Vogel <sv@exept.de>
parents: 10108
diff changeset
   135
5b8c1f5f8ffa #REFACTORING by stefan
Stefan Vogel <sv@exept.de>
parents: 10108
diff changeset
   136
!ISO10646_to_SGML methodsFor:'queries'!
5b8c1f5f8ffa #REFACTORING by stefan
Stefan Vogel <sv@exept.de>
parents: 10108
diff changeset
   137
5b8c1f5f8ffa #REFACTORING by stefan
Stefan Vogel <sv@exept.de>
parents: 10108
diff changeset
   138
characterSize:aCharacter
5b8c1f5f8ffa #REFACTORING by stefan
Stefan Vogel <sv@exept.de>
parents: 10108
diff changeset
   139
    |codePoint|
5b8c1f5f8ffa #REFACTORING by stefan
Stefan Vogel <sv@exept.de>
parents: 10108
diff changeset
   140
5b8c1f5f8ffa #REFACTORING by stefan
Stefan Vogel <sv@exept.de>
parents: 10108
diff changeset
   141
    codePoint := aCharacter codePoint.
5b8c1f5f8ffa #REFACTORING by stefan
Stefan Vogel <sv@exept.de>
parents: 10108
diff changeset
   142
    (codePoint between:16r20 and:16r7F) ifTrue:[
5b8c1f5f8ffa #REFACTORING by stefan
Stefan Vogel <sv@exept.de>
parents: 10108
diff changeset
   143
        ^ 1.
5b8c1f5f8ffa #REFACTORING by stefan
Stefan Vogel <sv@exept.de>
parents: 10108
diff changeset
   144
    ].
5b8c1f5f8ffa #REFACTORING by stefan
Stefan Vogel <sv@exept.de>
parents: 10108
diff changeset
   145
    ^ codePoint printString size + 3   "#&1234;"
5b8c1f5f8ffa #REFACTORING by stefan
Stefan Vogel <sv@exept.de>
parents: 10108
diff changeset
   146
5b8c1f5f8ffa #REFACTORING by stefan
Stefan Vogel <sv@exept.de>
parents: 10108
diff changeset
   147
    "Created: / 17-01-2018 / 18:01:40 / stefan"
5b8c1f5f8ffa #REFACTORING by stefan
Stefan Vogel <sv@exept.de>
parents: 10108
diff changeset
   148
! !
5b8c1f5f8ffa #REFACTORING by stefan
Stefan Vogel <sv@exept.de>
parents: 10108
diff changeset
   149
5b8c1f5f8ffa #REFACTORING by stefan
Stefan Vogel <sv@exept.de>
parents: 10108
diff changeset
   150
!ISO10646_to_SGML methodsFor:'stream support'!
5b8c1f5f8ffa #REFACTORING by stefan
Stefan Vogel <sv@exept.de>
parents: 10108
diff changeset
   151
5b8c1f5f8ffa #REFACTORING by stefan
Stefan Vogel <sv@exept.de>
parents: 10108
diff changeset
   152
readNextCharacterFrom:aStream
5b8c1f5f8ffa #REFACTORING by stefan
Stefan Vogel <sv@exept.de>
parents: 10108
diff changeset
   153
    |char codePoint|
5b8c1f5f8ffa #REFACTORING by stefan
Stefan Vogel <sv@exept.de>
parents: 10108
diff changeset
   154
5b8c1f5f8ffa #REFACTORING by stefan
Stefan Vogel <sv@exept.de>
parents: 10108
diff changeset
   155
    char := aStream next.
5b8c1f5f8ffa #REFACTORING by stefan
Stefan Vogel <sv@exept.de>
parents: 10108
diff changeset
   156
    (char ~~ $# and:[aStream peek ~~ $&]) ifTrue:[
5b8c1f5f8ffa #REFACTORING by stefan
Stefan Vogel <sv@exept.de>
parents: 10108
diff changeset
   157
        ^ char.
5b8c1f5f8ffa #REFACTORING by stefan
Stefan Vogel <sv@exept.de>
parents: 10108
diff changeset
   158
    ].
5b8c1f5f8ffa #REFACTORING by stefan
Stefan Vogel <sv@exept.de>
parents: 10108
diff changeset
   159
    aStream next.
5b8c1f5f8ffa #REFACTORING by stefan
Stefan Vogel <sv@exept.de>
parents: 10108
diff changeset
   160
5b8c1f5f8ffa #REFACTORING by stefan
Stefan Vogel <sv@exept.de>
parents: 10108
diff changeset
   161
    codePoint := 0.
5b8c1f5f8ffa #REFACTORING by stefan
Stefan Vogel <sv@exept.de>
parents: 10108
diff changeset
   162
    [char := aStream peekOrNil.
5b8c1f5f8ffa #REFACTORING by stefan
Stefan Vogel <sv@exept.de>
parents: 10108
diff changeset
   163
     char notNil and:[char isDigit]
5b8c1f5f8ffa #REFACTORING by stefan
Stefan Vogel <sv@exept.de>
parents: 10108
diff changeset
   164
    ] whileTrue:[
5b8c1f5f8ffa #REFACTORING by stefan
Stefan Vogel <sv@exept.de>
parents: 10108
diff changeset
   165
        codePoint := (codePoint * 10) + char digitValue.
5b8c1f5f8ffa #REFACTORING by stefan
Stefan Vogel <sv@exept.de>
parents: 10108
diff changeset
   166
        aStream next.
5b8c1f5f8ffa #REFACTORING by stefan
Stefan Vogel <sv@exept.de>
parents: 10108
diff changeset
   167
    ].
5b8c1f5f8ffa #REFACTORING by stefan
Stefan Vogel <sv@exept.de>
parents: 10108
diff changeset
   168
    aStream peekOrNil == $; ifTrue:[
5b8c1f5f8ffa #REFACTORING by stefan
Stefan Vogel <sv@exept.de>
parents: 10108
diff changeset
   169
        aStream next.
5b8c1f5f8ffa #REFACTORING by stefan
Stefan Vogel <sv@exept.de>
parents: 10108
diff changeset
   170
    ].
5b8c1f5f8ffa #REFACTORING by stefan
Stefan Vogel <sv@exept.de>
parents: 10108
diff changeset
   171
    ^ Character codePoint:codePoint.
5b8c1f5f8ffa #REFACTORING by stefan
Stefan Vogel <sv@exept.de>
parents: 10108
diff changeset
   172
5b8c1f5f8ffa #REFACTORING by stefan
Stefan Vogel <sv@exept.de>
parents: 10108
diff changeset
   173
    "Created: / 17-01-2018 / 18:37:40 / stefan"
8170
ffa1ed9338ad initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   174
! !
ffa1ed9338ad initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   175
ffa1ed9338ad initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   176
!ISO10646_to_SGML class methodsFor:'documentation'!
ffa1ed9338ad initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   177
ffa1ed9338ad initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   178
version
22477
5b8c1f5f8ffa #REFACTORING by stefan
Stefan Vogel <sv@exept.de>
parents: 10108
diff changeset
   179
    ^ '$Header$'
8170
ffa1ed9338ad initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   180
! !
22477
5b8c1f5f8ffa #REFACTORING by stefan
Stefan Vogel <sv@exept.de>
parents: 10108
diff changeset
   181