Encoder_JIS0208_to_JIS7.st
author Stefan Vogel <sv@exept.de>
Fri, 05 Mar 2004 22:57:38 +0100
changeset 8103 794d8e3f11d8
parent 8081 b468050174a9
child 8114 05274a80fcc4
permissions -rw-r--r--
Use the ANSI-blessed #codePoint instead of deprecated #asciiValue
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
8081
b468050174a9 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     1
"{ Package: 'stx:libbasic' }"
b468050174a9 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     2
b468050174a9 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     3
"{ NameSpace: CharacterEncoderImplementations }"
b468050174a9 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     4
b468050174a9 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     5
TwoByteEncoder subclass:#JIS0208_to_JIS7
b468050174a9 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     6
	instanceVariableNames:''
b468050174a9 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     7
	classVariableNames:'Jis7KanjiEscapeSequence Jis7RomanEscapeSequence
b468050174a9 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     8
		JisISO2022EscapeSequence Jis7KanjiOldEscapeSequence'
b468050174a9 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     9
	poolDictionaries:''
b468050174a9 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    10
	category:'Collections-Text-Encodings'
b468050174a9 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    11
!
b468050174a9 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    12
b468050174a9 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    13
!JIS0208_to_JIS7 class methodsFor:'documentation'!
b468050174a9 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    14
b468050174a9 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    15
examples
b468050174a9 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    16
"
b468050174a9 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    17
  Encoding (jis0208 to jis-7)
b468050174a9 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    18
     |t|
b468050174a9 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    19
b468050174a9 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    20
     t := JIS0208_to_JIS7 decodeString:'hello'.
b468050174a9 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    21
     JIS0208_to_JIS7 encodeString:t. 
b468050174a9 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    22
b468050174a9 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    23
b468050174a9 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    24
b468050174a9 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    25
 Decoding (jis-7 to jis0208):
b468050174a9 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    26
b468050174a9 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    27
     JIS0208_to_JIS7 decodeString:'hello'  
b468050174a9 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    28
b468050174a9 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    29
 ending with a crippled escape:
b468050174a9 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    30
b468050174a9 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    31
     |s|
b468050174a9 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    32
     s := 'hello' copyWith:Character esc.
b468050174a9 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    33
     JIS0208_to_JIS7 decodeString:s
b468050174a9 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    34
b468050174a9 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    35
     |s|
b468050174a9 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    36
     s := 'hello' copyWith:Character esc.
b468050174a9 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    37
     s := s copyWith:$A.
b468050174a9 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    38
     JIS0208_to_JIS7 decodeString:s
b468050174a9 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    39
b468050174a9 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    40
     |s|
b468050174a9 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    41
     s := 'hello' copyWith:Character esc.
b468050174a9 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    42
     s := s copyWith:$$.
b468050174a9 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    43
     JIS0208_to_JIS7 decodeString:s
b468050174a9 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    44
b468050174a9 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    45
     |s|
b468050174a9 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    46
     s := 'hello' copyWith:Character esc.
b468050174a9 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    47
     s := s copyWith:$$.
b468050174a9 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    48
     s := s copyWith:$A.
b468050174a9 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    49
     JIS0208_to_JIS7 decodeString:s
b468050174a9 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    50
b468050174a9 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    51
 ending with a KANJI-in,  but no more chars:
b468050174a9 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    52
b468050174a9 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    53
     |s|
b468050174a9 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    54
     s := 'hello' copyWith:Character esc.
b468050174a9 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    55
     s := s copyWith:$$.
b468050174a9 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    56
     s := s copyWith:$B.
b468050174a9 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    57
     JIS0208_to_JIS7 decodeString:s
b468050174a9 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    58
b468050174a9 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    59
 ending with a KANJI-in, followed by $3 (KO):
b468050174a9 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    60
b468050174a9 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    61
     |s|
b468050174a9 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    62
     s := 'hello' copyWith:Character esc.
b468050174a9 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    63
     s := s copyWith:$$.
b468050174a9 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    64
     s := s copyWith:$B.
b468050174a9 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    65
     s := s , '$3'.
b468050174a9 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    66
     JIS0208_to_JIS7 decodeString:s
b468050174a9 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    67
b468050174a9 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    68
 ending with a KANJI-in, followed by $3$l$OF| (KO RE HA NI):
b468050174a9 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    69
b468050174a9 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    70
     |s|
b468050174a9 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    71
     s := 'hello' copyWith:Character esc.
b468050174a9 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    72
     s := s copyWith:$$.
b468050174a9 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    73
     s := s copyWith:$B.
b468050174a9 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    74
     s := s , '$3$l$OF|'.
b468050174a9 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    75
     JIS0208_to_JIS7 decodeString:s
b468050174a9 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    76
b468050174a9 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    77
 a KO in between:
b468050174a9 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    78
b468050174a9 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    79
     |s|
b468050174a9 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    80
     s := 'hello' copyWith:Character esc.
b468050174a9 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    81
     s := s copyWith:$$.
b468050174a9 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    82
     s := s copyWith:$B.
b468050174a9 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    83
     s := s , '$3'.
b468050174a9 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    84
     s := s copyWith:Character esc.
b468050174a9 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    85
     s := s copyWith:$(.
b468050174a9 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    86
     s := s copyWith:$B.
b468050174a9 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    87
     s := s , 'hello'.
b468050174a9 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    88
     JIS0208_to_JIS7 decodeString:s
b468050174a9 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    89
b468050174a9 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    90
 I dont know what that means ;-):
b468050174a9 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    91
b468050174a9 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    92
     |s t l|
b468050174a9 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    93
     s := 'kterm ' copyWith:Character esc.
b468050174a9 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    94
     s := s copyWith:$$.
b468050174a9 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    95
     s := s copyWith:$B.
b468050174a9 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    96
     s := s , '$N4A;zC<Kv%(%_%e%l!!<%?'.
b468050174a9 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    97
     s := s copyWith:Character esc.
b468050174a9 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    98
     s := s copyWith:$(.
b468050174a9 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    99
     s := s copyWith:$B.
b468050174a9 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   100
     s := s , ' kterm'.
b468050174a9 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   101
     t := JIS0208_to_JIS7 decodeString:s.
b468050174a9 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   102
b468050174a9 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   103
     l := Label new.
b468050174a9 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   104
     l label:t.
b468050174a9 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   105
     l font:(Font family:'k14' face:nil style:nil size:nil).
b468050174a9 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   106
     l font:(Font family:'gothic' size:17).
b468050174a9 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   107
     l font:(Font family:'mincho' size:23).
b468050174a9 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   108
     l realize
b468050174a9 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   109
"
b468050174a9 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   110
! !
b468050174a9 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   111
b468050174a9 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   112
!JIS0208_to_JIS7 class methodsFor:'constants'!
b468050174a9 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   113
b468050174a9 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   114
jis7KanjiEscapeSequence
b468050174a9 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   115
    "return the escape sequence used to switch to kanji in jis7 encoded strings.
b468050174a9 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   116
     This happens to be the same as ISO2022-JP's escape sequence."
b468050174a9 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   117
b468050174a9 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   118
    Jis7KanjiEscapeSequence isNil ifTrue:[
b468050174a9 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   119
	Jis7KanjiEscapeSequence := Character esc asString , '$B'.
b468050174a9 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   120
    ].
b468050174a9 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   121
    ^ Jis7KanjiEscapeSequence.
b468050174a9 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   122
b468050174a9 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   123
    "Created: 26.2.1996 / 17:38:08 / cg"
b468050174a9 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   124
    "Modified: 30.6.1997 / 16:03:16 / cg"
b468050174a9 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   125
!
b468050174a9 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   126
b468050174a9 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   127
jis7RomanEscapeSequence
b468050174a9 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   128
    "return the escape sequence used to switch to roman in jis7 encoded strings"
b468050174a9 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   129
b468050174a9 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   130
    Jis7RomanEscapeSequence isNil ifTrue:[
b468050174a9 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   131
	Jis7RomanEscapeSequence := Character esc asString , '(J'.
b468050174a9 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   132
    ].
b468050174a9 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   133
    ^ Jis7RomanEscapeSequence.
b468050174a9 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   134
b468050174a9 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   135
    "Created: 26.2.1996 / 17:38:08 / cg"
b468050174a9 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   136
    "Modified: 30.6.1997 / 16:03:16 / cg"
b468050174a9 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   137
!
b468050174a9 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   138
b468050174a9 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   139
jisISO2022EscapeSequence
b468050174a9 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   140
    "return the escape sequence used to switch to kanji in iso2022 encoded strings"
b468050174a9 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   141
b468050174a9 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   142
    JisISO2022EscapeSequence isNil ifTrue:[
b468050174a9 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   143
        JisISO2022EscapeSequence := Character esc asString , '&@' , Character esc asString , '$B'.
b468050174a9 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   144
    ].
b468050174a9 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   145
    ^ JisISO2022EscapeSequence.
b468050174a9 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   146
! !
b468050174a9 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   147
b468050174a9 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   148
!JIS0208_to_JIS7 class methodsFor:'queries'!
b468050174a9 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   149
b468050174a9 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   150
nameOfDecodedCode
b468050174a9 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   151
    "I encode jis0208 into jis7 and vice versa"
b468050174a9 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   152
b468050174a9 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   153
    ^ #'jis0208'
b468050174a9 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   154
!
b468050174a9 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   155
b468050174a9 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   156
nameOfEncoding
b468050174a9 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   157
    "I encode jis0208 into jis7 and vice versa"
b468050174a9 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   158
b468050174a9 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   159
    ^ #'jis7'
b468050174a9 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   160
!
b468050174a9 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   161
b468050174a9 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   162
namesOfEncoding
b468050174a9 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   163
    "I encode jis0208 into jis7 and vice versa"
b468050174a9 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   164
b468050174a9 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   165
    ^ #( 'jis7' 'jis-7' 'x-jis7' 'x-iso2022-jp' 'iso2022-jp')
b468050174a9 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   166
! !
b468050174a9 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   167
b468050174a9 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   168
!JIS0208_to_JIS7 methodsFor:'encoding & decoding'!
b468050174a9 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   169
b468050174a9 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   170
decode:aCode
b468050174a9 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   171
    self shouldNotImplement "/ no single byte conversion possible
b468050174a9 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   172
!
b468050174a9 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   173
b468050174a9 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   174
decodeString:aString
b468050174a9 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   175
    "given a string in JIS7 encoding,
b468050174a9 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   176
     return a new string containing the same characters, in JIS0208 encoding.
b468050174a9 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   177
     The argument is interpreted as a JIS7 or ISO2022-JP encoded singleByte string.
b468050174a9 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   178
     There are various JIS encodings around (New-JIS, Old-JIS, NEC-JIS and ISO2022);
b468050174a9 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   179
     this one understands New-JIS, ISO2022 and treats Old-JIS just the same.
b468050174a9 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   180
     This conversion is only needed to convert strings as read from some external file.
b468050174a9 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   181
b468050174a9 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   182
     If you work a lot with jis7 encoded textFiles, 
b468050174a9 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   183
     this is a first-class candidate for a primitive."
b468050174a9 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   184
b468050174a9 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   185
    |newString 
b468050174a9 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   186
     sz         "{ Class: SmallInteger }"
b468050174a9 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   187
     dstIdx     "{ Class: SmallInteger }"
b468050174a9 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   188
     start      "{ Class: SmallInteger }"
b468050174a9 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   189
     stop       "{ Class: SmallInteger }"
b468050174a9 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   190
     n1 n2 n3  
b468050174a9 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   191
     b1         "{ Class: SmallInteger }"
b468050174a9 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   192
     b2         "{ Class: SmallInteger }"
b468050174a9 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   193
     val        "{ Class: SmallInteger }"
b468050174a9 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   194
     singleBytes katakana c|
b468050174a9 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   195
b468050174a9 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   196
    sz := aString size.
b468050174a9 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   197
    newString := JISEncodedString new:sz.
b468050174a9 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   198
    sz ~~ 0 ifTrue:[
b468050174a9 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   199
        dstIdx := 1.
b468050174a9 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   200
        start := 1.
b468050174a9 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   201
        singleBytes := true.
b468050174a9 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   202
        katakana := false.
b468050174a9 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   203
b468050174a9 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   204
        [true] whileTrue:[
b468050174a9 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   205
            "/
b468050174a9 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   206
            "/ scan for next escape"
b468050174a9 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   207
            "/
b468050174a9 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   208
            stop := aString indexOf:(Character esc) startingAt:start.
b468050174a9 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   209
            stop == 0 ifTrue:[
b468050174a9 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   210
                stop := sz + 1.
b468050174a9 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   211
            ] ifFalse:[
b468050174a9 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   212
                (stop + 2) > sz ifTrue:[
b468050174a9 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   213
                    stop := sz + 1.
b468050174a9 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   214
                ]
b468050174a9 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   215
            ].
b468050174a9 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   216
            singleBytes ifTrue:[
b468050174a9 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   217
                start to:(stop - 1) do:[:i |
b468050174a9 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   218
                    c := aString at:i.
b468050174a9 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   219
                    newString at:dstIdx put:c.
b468050174a9 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   220
                    dstIdx := dstIdx + 1.
b468050174a9 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   221
                ].
b468050174a9 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   222
            ] ifFalse:[
b468050174a9 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   223
                start to:(stop - 2) by:2 do:[:i |
8103
794d8e3f11d8 Use the ANSI-blessed #codePoint instead of deprecated #asciiValue
Stefan Vogel <sv@exept.de>
parents: 8081
diff changeset
   224
                    b1 := (aString at:i) codePoint.
794d8e3f11d8 Use the ANSI-blessed #codePoint instead of deprecated #asciiValue
Stefan Vogel <sv@exept.de>
parents: 8081
diff changeset
   225
                    b2 := (aString at:i+1) codePoint.
8081
b468050174a9 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   226
                    val := (b1 bitShift:8) bitOr:b2.
b468050174a9 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   227
                    newString at:dstIdx put:(Character value:val).
b468050174a9 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   228
                    dstIdx := dstIdx + 1.
b468050174a9 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   229
                ]
b468050174a9 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   230
            ].
b468050174a9 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   231
b468050174a9 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   232
            stop > sz ifTrue:[
b468050174a9 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   233
                ^ newString copyFrom:1 to:dstIdx - 1.
b468050174a9 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   234
            ].
b468050174a9 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   235
            start := stop.
b468050174a9 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   236
b468050174a9 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   237
            "/
b468050174a9 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   238
            "/ found an escape (at start) 
b468050174a9 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   239
            "/ - check for KI (<ESC> '$' 'B') or OLD-JIS-KI (<ESC> '$' '@')
b468050174a9 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   240
            "/ and KO(ASCII) (<ESC> '(' 'B') or KO(ROMAN) (<ESC> '(' 'J')
b468050174a9 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   241
            "/
b468050174a9 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   242
            n1 := aString at:start.
b468050174a9 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   243
            n2 := aString at:(start + 1).
b468050174a9 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   244
            n3 := aString at:(start + 2).
b468050174a9 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   245
            katakana := false.
b468050174a9 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   246
b468050174a9 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   247
            (n2 == $$ and:[n3 == $B ]) ifTrue:[
b468050174a9 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   248
                singleBytes := false.
b468050174a9 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   249
            ] ifFalse:[
b468050174a9 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   250
                (n2 == $$ and:[n3 == $@ ]) ifTrue:[
b468050174a9 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   251
                    singleBytes := false.
b468050174a9 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   252
                ] ifFalse:[
b468050174a9 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   253
                    (n2 == $( and:[n3 == $B ]) ifTrue:[
b468050174a9 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   254
                        singleBytes := true.
b468050174a9 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   255
                    ] ifFalse:[
b468050174a9 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   256
                        (n2 == $( and:[n3 == $J ]) ifTrue:[
b468050174a9 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   257
                            singleBytes := true.
b468050174a9 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   258
                        ] ifFalse:[
b468050174a9 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   259
                            (n2 == $( and:[n3 == $I ]) ifTrue:[
b468050174a9 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   260
                                singleBytes := true.
b468050174a9 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   261
                                katakana := true.
b468050174a9 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   262
                            ] ifFalse:[
b468050174a9 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   263
                                singleBytes ifTrue:[
b468050174a9 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   264
                                    newString at:dstIdx put:n1.
b468050174a9 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   265
                                    newString at:(dstIdx + 1) put:n2.
b468050174a9 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   266
                                    newString at:(dstIdx + 2) put:n3.
b468050174a9 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   267
                                    dstIdx := dstIdx + 3.
b468050174a9 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   268
                                ] ifFalse:[
b468050174a9 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   269
                                    DecodingError 
b468050174a9 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   270
                                            raiseWith:aString
b468050174a9 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   271
                                            errorString:'JIS7 decoding failed (not JIS7 encoded ?)'.
b468050174a9 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   272
                                    newString at:dstIdx put:n1.
b468050174a9 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   273
                                    newString at:(dstIdx + 1) put:n2.
b468050174a9 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   274
                                    newString at:(dstIdx + 2) put:n3.
b468050174a9 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   275
                                    dstIdx := dstIdx + 3.
b468050174a9 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   276
                                ]
b468050174a9 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   277
                            ]
b468050174a9 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   278
                        ]
b468050174a9 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   279
                    ]
b468050174a9 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   280
                ]
b468050174a9 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   281
            ].
b468050174a9 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   282
            start := start + 3.
b468050174a9 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   283
            start > sz ifTrue:[
b468050174a9 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   284
                ^ newString copyFrom:1 to:dstIdx-1.
b468050174a9 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   285
            ]
b468050174a9 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   286
        ]
b468050174a9 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   287
    ].
b468050174a9 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   288
    ^ newString
b468050174a9 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   289
!
b468050174a9 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   290
b468050174a9 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   291
encode:aCode
b468050174a9 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   292
    self shouldNotImplement "/ no single byte conversion possible
b468050174a9 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   293
!
b468050174a9 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   294
b468050174a9 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   295
encodeString:aJISString
b468050174a9 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   296
    "return a new string with aJISStrings characters as JIS7 encoded 7bit string,
b468050174a9 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   297
     The receiver must be a JIS encoded character string.
b468050174a9 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   298
     The resulting string is only useful to be stored on some external file,
b468050174a9 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   299
     not for being used inside ST/X.
b468050174a9 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   300
b468050174a9 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   301
     If you work a lot with jis7 encoded textFiles, 
b468050174a9 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   302
     this is a first-class candidate for a primitive."
b468050174a9 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   303
b468050174a9 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   304
    |sz "{ Class:SmallInteger }"
b468050174a9 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   305
     b1 "{ Class:SmallInteger }"
b468050174a9 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   306
     val romans out inSingleByteMode c kanji roman val2|
b468050174a9 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   307
b468050174a9 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   308
    inSingleByteMode := true.
b468050174a9 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   309
    kanji := self class jis7KanjiEscapeSequence.
b468050174a9 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   310
    roman := self class jis7RomanEscapeSequence.
b468050174a9 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   311
b468050174a9 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   312
    romans := CharacterEncoder::JIS0208 romanTable.
b468050174a9 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   313
b468050174a9 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   314
    sz := aJISString size.
b468050174a9 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   315
    sz == 0 ifTrue:[^ ''].
b468050174a9 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   316
b468050174a9 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   317
    out := WriteStream on:(String new:(sz * 2)).
b468050174a9 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   318
b468050174a9 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   319
    1 to:sz do:[:srcIndex |
8103
794d8e3f11d8 Use the ANSI-blessed #codePoint instead of deprecated #asciiValue
Stefan Vogel <sv@exept.de>
parents: 8081
diff changeset
   320
        c := aJISString at:srcIndex.
794d8e3f11d8 Use the ANSI-blessed #codePoint instead of deprecated #asciiValue
Stefan Vogel <sv@exept.de>
parents: 8081
diff changeset
   321
        b1 := c codePoint.
794d8e3f11d8 Use the ANSI-blessed #codePoint instead of deprecated #asciiValue
Stefan Vogel <sv@exept.de>
parents: 8081
diff changeset
   322
        b1 < 33 ifTrue:[
794d8e3f11d8 Use the ANSI-blessed #codePoint instead of deprecated #asciiValue
Stefan Vogel <sv@exept.de>
parents: 8081
diff changeset
   323
            "/ a control character
794d8e3f11d8 Use the ANSI-blessed #codePoint instead of deprecated #asciiValue
Stefan Vogel <sv@exept.de>
parents: 8081
diff changeset
   324
            inSingleByteMode ifFalse:[
794d8e3f11d8 Use the ANSI-blessed #codePoint instead of deprecated #asciiValue
Stefan Vogel <sv@exept.de>
parents: 8081
diff changeset
   325
                out nextPutAll:roman.
794d8e3f11d8 Use the ANSI-blessed #codePoint instead of deprecated #asciiValue
Stefan Vogel <sv@exept.de>
parents: 8081
diff changeset
   326
                inSingleByteMode := true
794d8e3f11d8 Use the ANSI-blessed #codePoint instead of deprecated #asciiValue
Stefan Vogel <sv@exept.de>
parents: 8081
diff changeset
   327
            ].
794d8e3f11d8 Use the ANSI-blessed #codePoint instead of deprecated #asciiValue
Stefan Vogel <sv@exept.de>
parents: 8081
diff changeset
   328
            out nextPut:c.
794d8e3f11d8 Use the ANSI-blessed #codePoint instead of deprecated #asciiValue
Stefan Vogel <sv@exept.de>
parents: 8081
diff changeset
   329
        ] ifFalse:[
794d8e3f11d8 Use the ANSI-blessed #codePoint instead of deprecated #asciiValue
Stefan Vogel <sv@exept.de>
parents: 8081
diff changeset
   330
            "/ check for a roman character
794d8e3f11d8 Use the ANSI-blessed #codePoint instead of deprecated #asciiValue
Stefan Vogel <sv@exept.de>
parents: 8081
diff changeset
   331
            "/ the two numbers below are romanTable min and romanTable max
794d8e3f11d8 Use the ANSI-blessed #codePoint instead of deprecated #asciiValue
Stefan Vogel <sv@exept.de>
parents: 8081
diff changeset
   332
            (b1 between:16r2121 and:16r2573) ifTrue:[
794d8e3f11d8 Use the ANSI-blessed #codePoint instead of deprecated #asciiValue
Stefan Vogel <sv@exept.de>
parents: 8081
diff changeset
   333
                val := romans indexOf:b1.
794d8e3f11d8 Use the ANSI-blessed #codePoint instead of deprecated #asciiValue
Stefan Vogel <sv@exept.de>
parents: 8081
diff changeset
   334
                val2 := val - 1 + 32.
794d8e3f11d8 Use the ANSI-blessed #codePoint instead of deprecated #asciiValue
Stefan Vogel <sv@exept.de>
parents: 8081
diff changeset
   335
                (val ~~ 0 and:[val2 <= 16r7F]) ifTrue:[
794d8e3f11d8 Use the ANSI-blessed #codePoint instead of deprecated #asciiValue
Stefan Vogel <sv@exept.de>
parents: 8081
diff changeset
   336
                    inSingleByteMode ifFalse:[
794d8e3f11d8 Use the ANSI-blessed #codePoint instead of deprecated #asciiValue
Stefan Vogel <sv@exept.de>
parents: 8081
diff changeset
   337
                        out nextPutAll:roman.
794d8e3f11d8 Use the ANSI-blessed #codePoint instead of deprecated #asciiValue
Stefan Vogel <sv@exept.de>
parents: 8081
diff changeset
   338
                        inSingleByteMode := true
794d8e3f11d8 Use the ANSI-blessed #codePoint instead of deprecated #asciiValue
Stefan Vogel <sv@exept.de>
parents: 8081
diff changeset
   339
                    ].
794d8e3f11d8 Use the ANSI-blessed #codePoint instead of deprecated #asciiValue
Stefan Vogel <sv@exept.de>
parents: 8081
diff changeset
   340
                    out nextPut:(Character value:val2)
794d8e3f11d8 Use the ANSI-blessed #codePoint instead of deprecated #asciiValue
Stefan Vogel <sv@exept.de>
parents: 8081
diff changeset
   341
                ] ifFalse:[
794d8e3f11d8 Use the ANSI-blessed #codePoint instead of deprecated #asciiValue
Stefan Vogel <sv@exept.de>
parents: 8081
diff changeset
   342
                    inSingleByteMode ifTrue:[
794d8e3f11d8 Use the ANSI-blessed #codePoint instead of deprecated #asciiValue
Stefan Vogel <sv@exept.de>
parents: 8081
diff changeset
   343
                        out nextPutAll:kanji.
794d8e3f11d8 Use the ANSI-blessed #codePoint instead of deprecated #asciiValue
Stefan Vogel <sv@exept.de>
parents: 8081
diff changeset
   344
                        inSingleByteMode := false
794d8e3f11d8 Use the ANSI-blessed #codePoint instead of deprecated #asciiValue
Stefan Vogel <sv@exept.de>
parents: 8081
diff changeset
   345
                    ].
794d8e3f11d8 Use the ANSI-blessed #codePoint instead of deprecated #asciiValue
Stefan Vogel <sv@exept.de>
parents: 8081
diff changeset
   346
                    out nextPut:(Character value:(b1 bitShift:-8)).
794d8e3f11d8 Use the ANSI-blessed #codePoint instead of deprecated #asciiValue
Stefan Vogel <sv@exept.de>
parents: 8081
diff changeset
   347
                    out nextPut:(Character value:(b1 bitAnd:16rFF)).
794d8e3f11d8 Use the ANSI-blessed #codePoint instead of deprecated #asciiValue
Stefan Vogel <sv@exept.de>
parents: 8081
diff changeset
   348
                ].
794d8e3f11d8 Use the ANSI-blessed #codePoint instead of deprecated #asciiValue
Stefan Vogel <sv@exept.de>
parents: 8081
diff changeset
   349
            ] ifFalse:[
794d8e3f11d8 Use the ANSI-blessed #codePoint instead of deprecated #asciiValue
Stefan Vogel <sv@exept.de>
parents: 8081
diff changeset
   350
                b1 <= 255 ifTrue:[
794d8e3f11d8 Use the ANSI-blessed #codePoint instead of deprecated #asciiValue
Stefan Vogel <sv@exept.de>
parents: 8081
diff changeset
   351
                    "/ mhmh - unrepresentable roman (national chars)
8081
b468050174a9 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   352
"/                    b1 >= 160 ifTrue:[
b468050174a9 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   353
"/                        ('no rep for ' , b1 printString) printNL.
b468050174a9 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   354
"/                    ].
8103
794d8e3f11d8 Use the ANSI-blessed #codePoint instead of deprecated #asciiValue
Stefan Vogel <sv@exept.de>
parents: 8081
diff changeset
   355
                    "/ there are non-japanese characters in there...
794d8e3f11d8 Use the ANSI-blessed #codePoint instead of deprecated #asciiValue
Stefan Vogel <sv@exept.de>
parents: 8081
diff changeset
   356
                    "/ assume that is OK (leave as is) ...
8081
b468050174a9 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   357
"/                    EncodingFailedError
b468050174a9 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   358
"/                        raiseWith:aJISString
b468050174a9 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   359
"/                        errorString:'JIS7 encoding failed (contains 8-bit characters ?)'.
b468050174a9 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   360
8103
794d8e3f11d8 Use the ANSI-blessed #codePoint instead of deprecated #asciiValue
Stefan Vogel <sv@exept.de>
parents: 8081
diff changeset
   361
                    inSingleByteMode ifFalse:[
794d8e3f11d8 Use the ANSI-blessed #codePoint instead of deprecated #asciiValue
Stefan Vogel <sv@exept.de>
parents: 8081
diff changeset
   362
                        out nextPutAll:roman.
794d8e3f11d8 Use the ANSI-blessed #codePoint instead of deprecated #asciiValue
Stefan Vogel <sv@exept.de>
parents: 8081
diff changeset
   363
                        inSingleByteMode := true
794d8e3f11d8 Use the ANSI-blessed #codePoint instead of deprecated #asciiValue
Stefan Vogel <sv@exept.de>
parents: 8081
diff changeset
   364
                    ].
794d8e3f11d8 Use the ANSI-blessed #codePoint instead of deprecated #asciiValue
Stefan Vogel <sv@exept.de>
parents: 8081
diff changeset
   365
                    out nextPut:c
794d8e3f11d8 Use the ANSI-blessed #codePoint instead of deprecated #asciiValue
Stefan Vogel <sv@exept.de>
parents: 8081
diff changeset
   366
                ] ifFalse:[
794d8e3f11d8 Use the ANSI-blessed #codePoint instead of deprecated #asciiValue
Stefan Vogel <sv@exept.de>
parents: 8081
diff changeset
   367
                    inSingleByteMode ifTrue:[
794d8e3f11d8 Use the ANSI-blessed #codePoint instead of deprecated #asciiValue
Stefan Vogel <sv@exept.de>
parents: 8081
diff changeset
   368
                        out nextPutAll:kanji.
794d8e3f11d8 Use the ANSI-blessed #codePoint instead of deprecated #asciiValue
Stefan Vogel <sv@exept.de>
parents: 8081
diff changeset
   369
                        inSingleByteMode := false
794d8e3f11d8 Use the ANSI-blessed #codePoint instead of deprecated #asciiValue
Stefan Vogel <sv@exept.de>
parents: 8081
diff changeset
   370
                    ].
794d8e3f11d8 Use the ANSI-blessed #codePoint instead of deprecated #asciiValue
Stefan Vogel <sv@exept.de>
parents: 8081
diff changeset
   371
                    out nextPut:(Character value:(b1 bitShift:-8)).
794d8e3f11d8 Use the ANSI-blessed #codePoint instead of deprecated #asciiValue
Stefan Vogel <sv@exept.de>
parents: 8081
diff changeset
   372
                    out nextPut:(Character value:(b1 bitAnd:16rFF)).
794d8e3f11d8 Use the ANSI-blessed #codePoint instead of deprecated #asciiValue
Stefan Vogel <sv@exept.de>
parents: 8081
diff changeset
   373
                ]
794d8e3f11d8 Use the ANSI-blessed #codePoint instead of deprecated #asciiValue
Stefan Vogel <sv@exept.de>
parents: 8081
diff changeset
   374
            ]
794d8e3f11d8 Use the ANSI-blessed #codePoint instead of deprecated #asciiValue
Stefan Vogel <sv@exept.de>
parents: 8081
diff changeset
   375
        ].
8081
b468050174a9 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   376
    ].
b468050174a9 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   377
    inSingleByteMode ifFalse:[
8103
794d8e3f11d8 Use the ANSI-blessed #codePoint instead of deprecated #asciiValue
Stefan Vogel <sv@exept.de>
parents: 8081
diff changeset
   378
        out nextPutAll:roman.
8081
b468050174a9 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   379
    ].
b468050174a9 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   380
    ^ out contents
b468050174a9 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   381
b468050174a9 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   382
    "simple:
b468050174a9 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   383
b468050174a9 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   384
     JIS0208_to_JIS7 encodeString:(JISEncodedString encodeRomans:'hello')
b468050174a9 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   385
    "
b468050174a9 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   386
! !
b468050174a9 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   387
b468050174a9 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   388
!JIS0208_to_JIS7 class methodsFor:'documentation'!
b468050174a9 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   389
b468050174a9 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   390
version
8103
794d8e3f11d8 Use the ANSI-blessed #codePoint instead of deprecated #asciiValue
Stefan Vogel <sv@exept.de>
parents: 8081
diff changeset
   391
    ^ '$Header: /cvs/stx/stx/libbasic/Attic/Encoder_JIS0208_to_JIS7.st,v 1.2 2004-03-05 21:57:38 stefan Exp $'
8081
b468050174a9 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   392
! !