--- a/CharacterEncoder.st Mon Mar 08 20:05:11 2004 +0100
+++ b/CharacterEncoder.st Tue Mar 09 00:05:08 2004 +0100
@@ -10,48 +10,14 @@
hereby transferred.
"
-"{ Package: 'stx:libbasic' }"
-
-Object subclass:#CharacterEncoder
- instanceVariableNames:'implementation'
- classVariableNames:'EncoderClassesByName EncodersByName CachedEncoders LastEncoder
- AccessLock'
- poolDictionaries:''
- category:'Collections-Text-Encodings'
-!
+'From Smalltalk/X, Version:5.2.1 on 09-03-2004 at 12:03:25 am' !
"{ Package: 'stx:libbasic' }"
-"{ NameSpace: CharacterEncoder }"
-
-CharacterEncoder subclass:#ASCII
- instanceVariableNames:''
- classVariableNames:''
- poolDictionaries:''
- category:'Collections-Text-Encodings'
-!
-
-nil subclass:#BIG5
+Object subclass:#CharacterEncoder
instanceVariableNames:''
- classVariableNames:''
- poolDictionaries:''
- privateIn:CharacterEncoder
-!
-
-nil subclass:#CNS11643
- instanceVariableNames:''
- classVariableNames:''
- poolDictionaries:''
- privateIn:CharacterEncoder
-!
-
-"{ Package: 'stx:libbasic' }"
-
-"{ NameSpace: CharacterEncoder }"
-
-CharacterEncoder subclass:#CP437
- instanceVariableNames:''
- classVariableNames:''
+ classVariableNames:'EncoderClassesByName EncodersByName CachedEncoders LastEncoder
+ AccessLock NullEncoderInstance'
poolDictionaries:''
category:'Collections-Text-Encodings'
!
@@ -70,206 +36,6 @@
privateIn:CharacterEncoder
!
-nil subclass:#GB2313_1980
- instanceVariableNames:''
- classVariableNames:''
- poolDictionaries:''
- privateIn:CharacterEncoder
-!
-
-nil subclass:#HANGUL
- instanceVariableNames:''
- classVariableNames:''
- poolDictionaries:''
- privateIn:CharacterEncoder
-!
-
-CharacterEncoder subclass:#ISO10646_1
- instanceVariableNames:''
- classVariableNames:''
- poolDictionaries:''
- privateIn:CharacterEncoder
-!
-
-nil subclass:#ISO10646_to_UTF8
- instanceVariableNames:''
- classVariableNames:''
- poolDictionaries:''
- privateIn:CharacterEncoder
-!
-
-"{ Package: 'stx:libbasic' }"
-
-"{ NameSpace: CharacterEncoder }"
-
-CharacterEncoder subclass:#ISO8859_1
- instanceVariableNames:''
- classVariableNames:''
- poolDictionaries:''
- category:'Collections-Text-Encodings'
-!
-
-"{ Package: 'stx:libbasic' }"
-
-"{ NameSpace: CharacterEncoder }"
-
-CharacterEncoder subclass:#SingleByteEncoder
- instanceVariableNames:''
- classVariableNames:''
- poolDictionaries:''
- category:'Collections-Text-Encodings'
-!
-
-SingleByteEncoder class instanceVariableNames:'mySingleInstance'
-
-"
- No other class instance variables are inherited by this class.
-"
-!
-
-"{ Package: 'stx:libbasic' }"
-
-"{ NameSpace: CharacterEncoder }"
-
-CharacterEncoder subclass:#ISO8859_11
- instanceVariableNames:''
- classVariableNames:''
- poolDictionaries:''
- category:'Collections-Text-Encodings'
-!
-
-"{ Package: 'stx:libbasic' }"
-
-"{ NameSpace: CharacterEncoder }"
-
-CharacterEncoder subclass:#ISO8859_13
- instanceVariableNames:''
- classVariableNames:''
- poolDictionaries:''
- category:'Collections-Text-Encodings'
-!
-
-"{ Package: 'stx:libbasic' }"
-
-"{ NameSpace: CharacterEncoder }"
-
-CharacterEncoder subclass:#ISO8859_14
- instanceVariableNames:''
- classVariableNames:''
- poolDictionaries:''
- category:'Collections-Text-Encodings'
-!
-
-"{ Package: 'stx:libbasic' }"
-
-"{ NameSpace: CharacterEncoder }"
-
-CharacterEncoder subclass:#ISO8859_15
- instanceVariableNames:''
- classVariableNames:''
- poolDictionaries:''
- category:'Collections-Text-Encodings'
-!
-
-"{ Package: 'stx:libbasic' }"
-
-"{ NameSpace: CharacterEncoder }"
-
-CharacterEncoder::SingleByteEncoder subclass:#ISO8859_16
- instanceVariableNames:''
- classVariableNames:''
- poolDictionaries:''
- category:'Collections-Text-Encodings'
-!
-
-"{ Package: 'stx:libbasic' }"
-
-"{ NameSpace: CharacterEncoder }"
-
-CharacterEncoder::SingleByteEncoder subclass:#ISO8859_2
- instanceVariableNames:''
- classVariableNames:''
- poolDictionaries:''
- category:'Collections-Text-Encodings'
-!
-
-"{ Package: 'stx:libbasic' }"
-
-"{ NameSpace: CharacterEncoder }"
-
-CharacterEncoder::SingleByteEncoder subclass:#ISO8859_3
- instanceVariableNames:''
- classVariableNames:''
- poolDictionaries:''
- category:'Collections-Text-Encodings'
-!
-
-"{ Package: 'stx:libbasic' }"
-
-"{ NameSpace: CharacterEncoder }"
-
-CharacterEncoder::SingleByteEncoder subclass:#ISO8859_4
- instanceVariableNames:''
- classVariableNames:''
- poolDictionaries:''
- category:'Collections-Text-Encodings'
-!
-
-"{ Package: 'stx:libbasic' }"
-
-"{ NameSpace: CharacterEncoder }"
-
-CharacterEncoder::SingleByteEncoder subclass:#ISO8859_5
- instanceVariableNames:''
- classVariableNames:''
- poolDictionaries:''
- category:'Collections-Text-Encodings'
-!
-
-"{ Package: 'stx:libbasic' }"
-
-"{ NameSpace: CharacterEncoder }"
-
-CharacterEncoder::SingleByteEncoder subclass:#ISO8859_6
- instanceVariableNames:''
- classVariableNames:''
- poolDictionaries:''
- category:'Collections-Text-Encodings'
-!
-
-"{ Package: 'stx:libbasic' }"
-
-"{ NameSpace: CharacterEncoder }"
-
-CharacterEncoder::SingleByteEncoder subclass:#ISO8859_7
- instanceVariableNames:''
- classVariableNames:''
- poolDictionaries:''
- category:'Collections-Text-Encodings'
-!
-
-"{ Package: 'stx:libbasic' }"
-
-"{ NameSpace: CharacterEncoder }"
-
-CharacterEncoder::SingleByteEncoder subclass:#ISO8859_8
- instanceVariableNames:''
- classVariableNames:''
- poolDictionaries:''
- category:'Collections-Text-Encodings'
-!
-
-"{ Package: 'stx:libbasic' }"
-
-"{ NameSpace: CharacterEncoder }"
-
-ISO8859_1 subclass:#ISO8859_9
- instanceVariableNames:''
- classVariableNames:''
- poolDictionaries:''
- category:'Collections-Text-Encodings'
-!
-
CharacterEncoder subclass:#InverseEncoder
instanceVariableNames:'decoder'
classVariableNames:''
@@ -277,356 +43,6 @@
privateIn:CharacterEncoder
!
-"{ Package: 'stx:libbasic' }"
-
-"{ NameSpace: CharacterEncoder }"
-
-CharacterEncoder::SingleByteEncoder subclass:#JIS0201
- instanceVariableNames:''
- classVariableNames:''
- poolDictionaries:''
- category:'Collections-Text-Encodings'
-!
-
-nil subclass:#JIS0208
- instanceVariableNames:''
- classVariableNames:''
- poolDictionaries:''
- privateIn:CharacterEncoder
-!
-
-nil subclass:#JIS0208_to_JIS7
- instanceVariableNames:''
- classVariableNames:'Jis7KanjiEscapeSequence Jis7RomanEscapeSequence
- JisISO2022EscapeSequence Jis7KanjiOldEscapeSequence'
- poolDictionaries:''
- privateIn:CharacterEncoder
-!
-
-nil subclass:#JIS0212
- instanceVariableNames:''
- classVariableNames:''
- poolDictionaries:''
- privateIn:CharacterEncoder
-!
-
-nil subclass:#JOHAB
- instanceVariableNames:''
- classVariableNames:''
- poolDictionaries:''
- privateIn:CharacterEncoder
-!
-
-"{ Package: 'stx:libbasic' }"
-
-"{ NameSpace: CharacterEncoder }"
-
-CharacterEncoder::SingleByteEncoder subclass:#KOI7
- instanceVariableNames:''
- classVariableNames:''
- poolDictionaries:''
- category:'Collections-Text-Encodings'
-!
-
-"{ Package: 'stx:libbasic' }"
-
-"{ NameSpace: CharacterEncoder }"
-
-CharacterEncoder::SingleByteEncoder subclass:#KOI8_R
- instanceVariableNames:''
- classVariableNames:''
- poolDictionaries:''
- category:'Collections-Text-Encodings'
-!
-
-CharacterEncoder::CharacterEncoder::KOI8_R subclass:#KOI8_U
- instanceVariableNames:''
- classVariableNames:''
- poolDictionaries:''
- privateIn:CharacterEncoder
-!
-
-nil subclass:#KSC5601
- instanceVariableNames:''
- classVariableNames:''
- poolDictionaries:''
- privateIn:CharacterEncoder
-!
-
-"{ Package: 'stx:libbasic' }"
-
-"{ NameSpace: CharacterEncoder }"
-
-CharacterEncoder::SingleByteEncoder subclass:#MAC_Arabic
- instanceVariableNames:''
- classVariableNames:''
- poolDictionaries:''
- category:'Collections-Text-Encodings'
-!
-
-"{ Package: 'stx:libbasic' }"
-
-"{ NameSpace: CharacterEncoder }"
-
-CharacterEncoder::SingleByteEncoder subclass:#MAC_CentralEuropean
- instanceVariableNames:''
- classVariableNames:''
- poolDictionaries:''
- category:'Collections-Text-Encodings'
-!
-
-"{ Package: 'stx:libbasic' }"
-
-"{ NameSpace: CharacterEncoder }"
-
-CharacterEncoder::SingleByteEncoder subclass:#MAC_Croatian
- instanceVariableNames:''
- classVariableNames:''
- poolDictionaries:''
- category:'Collections-Text-Encodings'
-!
-
-"{ Package: 'stx:libbasic' }"
-
-"{ NameSpace: CharacterEncoder }"
-
-CharacterEncoder::SingleByteEncoder subclass:#MAC_Cyrillic
- instanceVariableNames:''
- classVariableNames:''
- poolDictionaries:''
- category:'Collections-Text-Encodings'
-!
-
-"{ Package: 'stx:libbasic' }"
-
-"{ NameSpace: CharacterEncoder }"
-
-CharacterEncoder::SingleByteEncoder subclass:#MAC_Dingbats
- instanceVariableNames:''
- classVariableNames:''
- poolDictionaries:''
- category:'Collections-Text-Encodings'
-!
-
-"{ Package: 'stx:libbasic' }"
-
-"{ NameSpace: CharacterEncoder }"
-
-CharacterEncoder::SingleByteEncoder subclass:#MAC_Farsi
- instanceVariableNames:''
- classVariableNames:''
- poolDictionaries:''
- category:'Collections-Text-Encodings'
-!
-
-"{ Package: 'stx:libbasic' }"
-
-"{ NameSpace: CharacterEncoder }"
-
-CharacterEncoder::SingleByteEncoder subclass:#MAC_Greek
- instanceVariableNames:''
- classVariableNames:''
- poolDictionaries:''
- category:'Collections-Text-Encodings'
-!
-
-"{ Package: 'stx:libbasic' }"
-
-"{ NameSpace: CharacterEncoder }"
-
-CharacterEncoder::SingleByteEncoder subclass:#MAC_Hebrew
- instanceVariableNames:''
- classVariableNames:''
- poolDictionaries:''
- category:'Collections-Text-Encodings'
-!
-
-"{ Package: 'stx:libbasic' }"
-
-"{ NameSpace: CharacterEncoder }"
-
-CharacterEncoder::SingleByteEncoder subclass:#MAC_Iceland
- instanceVariableNames:''
- classVariableNames:''
- poolDictionaries:''
- category:'Collections-Text-Encodings'
-!
-
-nil subclass:#MAC_Japanese
- instanceVariableNames:''
- classVariableNames:''
- poolDictionaries:''
- privateIn:CharacterEncoder
-!
-
-nil subclass:#MAC_Korean
- instanceVariableNames:''
- classVariableNames:''
- poolDictionaries:''
- privateIn:CharacterEncoder
-!
-
-"{ Package: 'stx:libbasic' }"
-
-"{ NameSpace: CharacterEncoder }"
-
-CharacterEncoder::SingleByteEncoder subclass:#MAC_Roman
- instanceVariableNames:''
- classVariableNames:''
- poolDictionaries:''
- category:'Collections-Text-Encodings'
-!
-
-"{ Package: 'stx:libbasic' }"
-
-"{ NameSpace: CharacterEncoder }"
-
-CharacterEncoder::SingleByteEncoder subclass:#MAC_Romanian
- instanceVariableNames:''
- classVariableNames:''
- poolDictionaries:''
- category:'Collections-Text-Encodings'
-!
-
-"{ Package: 'stx:libbasic' }"
-
-"{ NameSpace: CharacterEncoder }"
-
-CharacterEncoder::SingleByteEncoder subclass:#MAC_Symbol
- instanceVariableNames:''
- classVariableNames:''
- poolDictionaries:''
- category:'Collections-Text-Encodings'
-!
-
-nil subclass:#MAC_Thai
- instanceVariableNames:''
- classVariableNames:''
- poolDictionaries:''
- privateIn:CharacterEncoder
-!
-
-"{ Package: 'stx:libbasic' }"
-
-"{ NameSpace: CharacterEncoder }"
-
-CharacterEncoder::SingleByteEncoder subclass:#MAC_Turkish
- instanceVariableNames:''
- classVariableNames:''
- poolDictionaries:''
- category:'Collections-Text-Encodings'
-!
-
-"{ Package: 'stx:libbasic' }"
-
-"{ NameSpace: CharacterEncoder }"
-
-CharacterEncoder::SingleByteEncoder subclass:#MS_Ansi
- instanceVariableNames:''
- classVariableNames:''
- poolDictionaries:''
- category:'Collections-Text-Encodings'
-!
-
-"{ Package: 'stx:libbasic' }"
-
-"{ NameSpace: CharacterEncoder }"
-
-CharacterEncoder::SingleByteEncoder subclass:#MS_Arabic
- instanceVariableNames:''
- classVariableNames:''
- poolDictionaries:''
- category:'Collections-Text-Encodings'
-!
-
-"{ Package: 'stx:libbasic' }"
-
-"{ NameSpace: CharacterEncoder }"
-
-CharacterEncoder::SingleByteEncoder subclass:#MS_Baltic
- instanceVariableNames:''
- classVariableNames:''
- poolDictionaries:''
- category:'Collections-Text-Encodings'
-!
-
-"{ Package: 'stx:libbasic' }"
-
-"{ NameSpace: CharacterEncoder }"
-
-CharacterEncoder::SingleByteEncoder subclass:#MS_Cyrillic
- instanceVariableNames:''
- classVariableNames:''
- poolDictionaries:''
- category:'Collections-Text-Encodings'
-!
-
-"{ Package: 'stx:libbasic' }"
-
-"{ NameSpace: CharacterEncoder }"
-
-CharacterEncoder::SingleByteEncoder subclass:#MS_EastEuropean
- instanceVariableNames:''
- classVariableNames:''
- poolDictionaries:''
- category:'Collections-Text-Encodings'
-!
-
-"{ Package: 'stx:libbasic' }"
-
-"{ NameSpace: CharacterEncoder }"
-
-CharacterEncoder::SingleByteEncoder subclass:#MS_Greek
- instanceVariableNames:''
- classVariableNames:''
- poolDictionaries:''
- category:'Collections-Text-Encodings'
-!
-
-"{ Package: 'stx:libbasic' }"
-
-"{ NameSpace: CharacterEncoder }"
-
-CharacterEncoder::SingleByteEncoder subclass:#MS_Hebrew
- instanceVariableNames:''
- classVariableNames:''
- poolDictionaries:''
- category:'Collections-Text-Encodings'
-!
-
-"{ Package: 'stx:libbasic' }"
-
-"{ NameSpace: CharacterEncoder }"
-
-CharacterEncoder::SingleByteEncoder subclass:#MS_Symbol
- instanceVariableNames:''
- classVariableNames:''
- poolDictionaries:''
- category:'Collections-Text-Encodings'
-!
-
-"{ Package: 'stx:libbasic' }"
-
-"{ NameSpace: CharacterEncoder }"
-
-CharacterEncoder::SingleByteEncoder subclass:#MS_Turkish
- instanceVariableNames:''
- classVariableNames:''
- poolDictionaries:''
- category:'Collections-Text-Encodings'
-!
-
-"{ Package: 'stx:libbasic' }"
-
-"{ NameSpace: CharacterEncoder }"
-
-CharacterEncoder::SingleByteEncoder subclass:#NEXT
- instanceVariableNames:''
- classVariableNames:''
- poolDictionaries:''
- category:'Collections-Text-Encodings'
-!
-
CharacterEncoder subclass:#NullEncoder
instanceVariableNames:''
classVariableNames:''
@@ -634,13 +50,6 @@
privateIn:CharacterEncoder
!
-CharacterEncoder::NullEncoder class instanceVariableNames:'mySingleInstance'
-
-"
- No other class instance variables are inherited by this class.
-"
-!
-
CharacterEncoder subclass:#OtherEncoding
instanceVariableNames:''
classVariableNames:''
@@ -648,24 +57,6 @@
privateIn:CharacterEncoder
!
-nil subclass:#SJIS
- instanceVariableNames:''
- classVariableNames:''
- poolDictionaries:''
- privateIn:CharacterEncoder
-!
-
-"{ Package: 'stx:libbasic' }"
-
-"{ NameSpace: CharacterEncoder }"
-
-CharacterEncoder::SingleByteEncoder subclass:#ISO8859_10
- instanceVariableNames:''
- classVariableNames:''
- poolDictionaries:''
- category:'Collections-Text-Encodings'
-!
-
CharacterEncoder subclass:#TwoStepEncoder
instanceVariableNames:'encoder1 encoder2'
classVariableNames:''
@@ -783,27 +174,6 @@
!CharacterEncoder class methodsFor:'instance creation'!
-cachedEncoderToEncodeFrom:oldEncoding into:newEncoding
- |encoders encoder|
-
- oldEncoding isSymbol ifFalse:[self halt:'symbol argument expected'].
- newEncoding isSymbol ifFalse:[self halt:'symbol argument expected'].
-
- encoders := CachedEncoders at:oldEncoding ifAbsent:nil.
- encoders notNil ifTrue:[
- encoder := encoders at:newEncoding ifAbsent:nil.
- encoder notNil ifTrue:[^ encoder].
- ].
-
- encoder := self encoderToEncodeFrom:oldEncoding into:newEncoding.
-
- encoders isNil ifTrue:[
- CachedEncoders at:oldEncoding put:(encoders := IdentityDictionary new).
- ].
- encoders at:newEncoding put:encoder.
- ^ encoder.
-!
-
encoderFor:encodingNameSymbol
"given the name of an encoding, return an encoder-instance which can map these from/into unicode."
@@ -811,7 +181,7 @@
encoderFor:encodingNameSymbol
ifAbsent:[
self error:'no encoder for ' , encodingNameSymbol mayProceed:true.
- NullEncoder new
+ NullEncoderInstance
]
"
@@ -830,64 +200,76 @@
encoderFor:encodingNameSymbol ifAbsent:exceptionValue
"given the name of an encoding, return an encoder-instance which can map these from/into unicode."
- |enc cls lcName name|
+ |enc cls lcName name unicodeEncoders unicodeEncoderClasses|
+
+ encodingNameSymbol isNil ifTrue:[ ^ NullEncoderInstance].
- encodingNameSymbol isNil ifTrue:[ ^ NullEncoder new].
+ lcName := encodingNameSymbol asLowercase.
+ name := lcName asSymbolIfInterned.
+ name isNil ifTrue:[name := lcName].
- encodingNameSymbol includesMatchCharacters ifTrue:[
- self allSubclassesDo:[:cls |
- cls nameOfDecodedCode == #'unicode' ifTrue:[
- (cls namesOfEncoding contains:[:any | encodingNameSymbol matches:any]) ifTrue:[
- ^ cls new.
- ]
+ name includesMatchCharacters ifTrue:[
+ unicodeEncoders := EncodersByName at:#unicode ifAbsent:nil.
+ unicodeEncoders notNil ifTrue:[
+ unicodeEncoders keysAndValuesDo:[:eachEncodingAlias :eachEncoderInstance |
+ (name matches:eachEncodingAlias) ifTrue:[
+ ^ eachEncoderInstance.
+ ].
+ ].
+ ].
+
+ unicodeEncoderClasses := EncoderClassesByName at:#unicode.
+ unicodeEncoderClasses keysAndValuesDo:[:eachEncodingAlias :eachEncoderClass |
+ (name matches:eachEncodingAlias) ifTrue:[
+ ^ eachEncoderClass new.
].
].
^ exceptionValue value
].
- lcName := encodingNameSymbol asLowercase asSymbolIfInterned.
- name := lcName ? encodingNameSymbol.
+ AccessLock critical:[
+ unicodeEncoders := EncodersByName at:#unicode ifAbsent:nil.
+ unicodeEncoders isNil ifTrue:[
+ EncodersByName at:#unicode put:(unicodeEncoders := Dictionary new).
+ ].
+ enc := unicodeEncoders at:name ifAbsent:nil.
- AccessLock critical:[
- enc := EncodersByName at:name ifAbsent:nil.
+ enc isNil ifTrue:[
+ unicodeEncoderClasses := EncoderClassesByName at:#unicode ifAbsent:nil.
+ cls := unicodeEncoderClasses at:name ifAbsent:nil.
+ cls notNil ifTrue:[
+ enc := cls new.
+ unicodeEncoders at:name put:enc.
+ ].
+ ].
].
- enc notNil ifTrue:[^ enc ].
-
- cls := EncoderClassesByName at:name ifAbsent:nil.
- cls notNil ifTrue:[
- enc := cls new.
- AccessLock critical:[
- EncodersByName at:name put:enc.
- ].
+ enc notNil ifTrue:[
^ enc
].
- self allSubclassesDo:[:cls |
- cls nameOfDecodedCode == #'unicode' ifTrue:[
- (cls namesOfEncoding includes:name) ifTrue:[
- enc := cls new.
+ "/ no direct encoder from unicode->name
+ "/ search for unicode->any and: any->name
+ unicodeEncoderClasses := EncoderClassesByName at:#unicode ifAbsent:nil.
+ unicodeEncoderClasses keysAndValuesDo:[:eachEncodingAlias :eachEncoderClass |
+ |dict2|
+
+ dict2 := EncoderClassesByName at:eachEncodingAlias ifAbsent:nil.
+ dict2 notNil ifTrue:[
+ cls := dict2 at:name ifAbsent:nil.
+ cls notNil ifTrue:[
+ enc := TwoStepEncoder new
+ encoder1:(self encoderFor:eachEncodingAlias)
+ encoder2:(cls new).
+
AccessLock critical:[
- EncodersByName at:name put:enc.
+ unicodeEncoders at:name put:enc.
].
+self halt.
^ enc.
]
].
].
- self allSubclassesDo:[:cls |
- (cls namesOfEncoding includes:name) ifTrue:[
- "/ ok, found some other encoder - need a compound encoder then.
- "/ the one found encodes into what we need, but needs something else as input.
-
- enc := TwoStepEncoder new
- encoder1:(self encoderFor:(cls nameOfDecodedCode))
- encoder2:(cls new).
- AccessLock critical:[
- EncodersByName at:name put:enc.
- ].
- ^ enc.
- ].
- ].
^ exceptionValue value
"
@@ -904,75 +286,67 @@
!
encoderToEncodeFrom:oldEncodingArg into:newEncodingArg
- |oldEncoding newEncoding encoder decoder|
+ |oldEncoding newEncoding encoders encoderClasses encoder decoder cls|
+
+ oldEncodingArg isSymbol ifFalse:[self halt:'symbol argument expected'].
+ newEncodingArg isSymbol ifFalse:[self halt:'symbol argument expected'].
oldEncoding := oldEncodingArg ? #'unicode'.
oldEncoding == #'iso10646-1' ifTrue:[ oldEncoding := #'unicode'].
newEncoding := newEncodingArg ? #'unicode'.
newEncoding == #'iso10646-1' ifTrue:[ newEncoding := #'unicode'].
- oldEncoding == newEncoding ifTrue:[^ NullEncoder new].
- (oldEncoding match:newEncoding) ifTrue:[^ NullEncoder new].
- "/ (newEncoding match:oldEncoding) ifTrue:[^ NullEncoder new].
-
- (oldEncoding == #unicode) ifTrue:[
- (newEncoding == #unicode) ifTrue:[^ NullEncoder new].
+ oldEncoding == newEncoding ifTrue:[^ NullEncoderInstance].
+ (oldEncoding match:newEncoding) ifTrue:[^ NullEncoderInstance].
- "/ unicode -> something
- ^ self encoderFor:newEncoding.
- ].
- (newEncoding == #unicode) ifTrue:[
- "/ something -> unicode
- decoder := self encoderFor:oldEncoding.
- ^ CharacterEncoderImplementations::InverseEncoder new decoder:decoder.
+ AccessLock critical:[
+ encoders := EncodersByName at:oldEncoding ifAbsent:nil.
+ encoders isNil ifTrue:[
+ EncodersByName at:oldEncoding put:(encoders := Dictionary new).
+ ].
+ encoder := encoders at:newEncodingArg ifAbsent:nil.
+ encoder isNil ifTrue:[
+ encoderClasses := EncoderClassesByName at:oldEncoding ifAbsent:nil.
+ encoderClasses isNil ifTrue:[
+ EncoderClassesByName at:oldEncoding put:(encoders := Dictionary new).
+ ].
+ cls := encoders at:name ifAbsent:nil.
+ cls notNil ifTrue:[
+ encoder := cls new.
+ encoders at:name put:encoder.
+ ].
+ ].
].
- "/ look for a specialized encoder...
- self allSubclassesDo:[:cls |
- (cls namesOfEncoding includes:oldEncoding) ifTrue:[
- |encoderForDecodedCode|
+ encoder isNil ifTrue:[
+ (newEncoding == #unicode) ifTrue:[
+ "/ something -> unicode
+ decoder := self encoderFor:oldEncoding.
+ encoder := InverseEncoder new decoder:decoder.
+ ] ifFalse:[
+ "/ do it as: oldEncoding -> unicode -> newEncoding
- encoderForDecodedCode := self encoderFor:(cls nameOfDecodedCode).
- (encoderForDecodedCode namesOfEncoding includes:newEncoding) ifTrue:[
- ^ CharacterEncoderImplementations::InverseEncoder new decoder:cls new.
- ]
- ].
- (cls namesOfEncoding includes:newEncoding) ifTrue:[
- |encoderForDecodedCode|
+ "/ something -> unicode
+ decoder := self encoderFor:oldEncoding.
- encoderForDecodedCode := self encoderFor:(cls nameOfDecodedCode).
- (encoderForDecodedCode namesOfEncoding includes:oldEncoding) ifTrue:[
- ^ cls new.
- ]
+ "/ unicode -> something
+ encoder := self encoderFor:newEncoding.
+ encoder := CompoundEncoder new encoder:encoder decoder:decoder.
].
].
-
- "/ do it as: oldEncoding -> unicode -> newEncoding
-
- "/ something -> unicode
- decoder := self encoderFor:oldEncoding.
- "/ unicode -> something
- encoder := self encoderFor:newEncoding.
- ^ CharacterEncoderImplementations::CompoundEncoder new encoder:encoder decoder:decoder.
+ AccessLock critical:[
+ (EncodersByName at:oldEncoding) at:newEncoding put:encoder
+ ].
+ ^ encoder
- "
+ " CharacterEncoder initialize
CharacterEncoder encoderToEncodeFrom:#'latin1' into:#'jis7'
- CharacterEncoder encoderToEncodeFrom:'koi8-r' into:#'mac-cyrillic'
+ CharacterEncoder encoderToEncodeFrom:#'koi8-r' into:#'mac-cyrillic'
CharacterEncoder encoderToEncodeFrom:#'ms-arabic' into:#'mac-arabic'
CharacterEncoder encoderToEncodeFrom:#'iso8859-5' into:#'koi8-r'
CharacterEncoder encoderToEncodeFrom:#'koi8-r' into:#'koi8-u'
"
-!
-
-new
- self isAbstract ifTrue:[self error].
- ^ self basicNew implementation:(CharacterEncoderImplementations at:(self nameWithoutPrefix)) new.
-
- "
- CharacterEncoder new
- CharacterEncoder::ASCII new
- "
! !
!CharacterEncoder class methodsFor:'Compatibility-ST80'!
@@ -998,39 +372,150 @@
initialize
AccessLock := Semaphore forMutualExclusion.
+ NullEncoderInstance := NullEncoder new.
EncodersByName := IdentityDictionary new.
EncoderClassesByName := IdentityDictionary new.
CachedEncoders := IdentityDictionary new.
-"/ EncoderClassesByName at:#'iso8859-1' put:ISO8859_1.
-"/ EncoderClassesByName at:#'iso8859-2' put:ISO8859_2.
-"/ EncoderClassesByName at:#'iso8859-3' put:ISO8859_3.
-"/ EncoderClassesByName at:#'iso8859-4' put:ISO8859_4.
-"/ EncoderClassesByName at:#'iso8859-5' put:ISO8859_5.
-"/ EncoderClassesByName at:#'iso8859-6' put:ISO8859_6.
-"/ EncoderClassesByName at:#'iso8859-7' put:ISO8859_7.
-"/ EncoderClassesByName at:#'iso8859-8' put:ISO8859_8.
-"/ EncoderClassesByName at:#'iso8859-9' put:ISO8859_9.
-"/ EncoderClassesByName at:#'iso8859-10' put:ISO8859_10.
-"/ EncoderClassesByName at:#'iso8859-11' put:ISO8859_11.
-"/ EncoderClassesByName at:#'iso8859-13' put:ISO8859_13.
-"/ EncoderClassesByName at:#'iso8859-14' put:ISO8859_14.
-"/ EncoderClassesByName at:#'iso8859-15' put:ISO8859_15.
-"/ EncoderClassesByName at:#'iso8859-16' put:ISO8859_16.
-"/
-"/ EncoderClassesByName at:#'big5' put:BIG5.
-"/ EncoderClassesByName at:#'cns11643' put:CNS11643.
-"/ EncoderClassesByName at:#'gb2313-1980' put:GB2313_1980.
-"/ EncoderClassesByName at:#'jis0201' put:JIS0201.
-"/ EncoderClassesByName at:#'jis0208' put:JIS0208.
-"/ EncoderClassesByName at:#'jis0212' put:JIS0212.
-"/ EncoderClassesByName at:#'sjis' put:SJIS.
-"/ EncoderClassesByName at:#'ksc5601' put:KSC5601.
-"/ EncoderClassesByName at:#'koi8-r' put:KOI8_R.
-"/ EncoderClassesByName at:#'koi8-u' put:KOI8_U.
-"/
-"/ EncoderClassesByName at:#'next' put:NEXT.
+ "/ class decoded-name array-of-encodingNames
+ #(
+ (ASCII unicode ( ascii 'us-ascii' 'iso-ir-6' 'ibm-367' 'ms-cp367' 'cp367' 'iso646-us' 'ibm-cp367' ))
+
+ (BIG5 unicode ( big5 ))
+
+ (CNS11643 unicode ( 'cns11643' ))
+
+ (CP437 unicode ( 'cp437' 'cp-437' 'ibm-437' 'ms-cp437' 'microsoft-cp437' 'ibm-cp437' ))
+
+ (GB2313_1980 unicode ( 'gb2313' 'gb2313-1980' ))
+
+ (HANGUL unicode ( 'hangul' ))
+
+ (ISO10646_1 unicode ( unicode 'iso10646_1' 'iso10646-1' 'iso-10646-1' ))
+
+ (ISO10646_to_UTF8 unicode ( utf8 'utf-8' ))
+
+ (ISO8859_1 unicode ( 'iso8859_1' 'iso8859-1' 'iso-8859-1' 'latin-1' 'latin1' 'iso-ir-100' 'ibm-819' 'ms-cp819' 'ibm-cp819' ))
+
+ (ISO8859_2 unicode ( 'iso8859_2' 'iso8859-2' 'iso-8859-2' 'latin2' 'latin-2' 'iso-ir-101'))
+
+ (ISO8859_3 unicode ( 'iso8859_3' 'iso8859-3' 'iso-8859-3' 'latin3' 'latin-3' 'iso-ir-109'))
+
+ (ISO8859_4 unicode ( 'iso8859_4' 'iso8859-4' 'iso-8859-4' 'latin4' 'latin-4' 'iso-ir-110'))
+
+ (ISO8859_5 unicode ( 'iso8859_5' 'iso8859-5' 'iso-8859-5' 'cyrillic' 'iso-ir-144' ))
+
+ (ISO8859_6 unicode ( 'iso8859_6' 'iso8859-6' 'iso-8859-6' 'arabic' 'asmo-708' 'ecma-114' 'iso-ir-127' ))
+
+ (ISO8859_7 unicode ( 'iso8859_7' 'iso8859-7' 'iso-8859-7' 'greek' 'iso-ir-126' 'ecma-118'))
+
+ (ISO8859_8 unicode ( 'iso8859_8' 'iso8859-8' 'iso-8859-8' 'hebrew' 'iso-ir-138' ))
+
+ (ISO8859_9 unicode ( 'iso8859_9' 'iso8859-9' 'iso-8859-9' 'latin5' 'latin-5' 'iso-ir-148'))
+
+ (ISO8859_10 unicode ( 'iso8859_10' 'iso8859-10' 'iso-8859-10' 'latin6' 'latin-6' 'iso-ir-157'))
+
+ (ISO8859_11 unicode ( 'iso8859_11' 'iso8859-11' 'iso-8859-11' 'thai' ))
+
+ (ISO8859_13 unicode ( 'iso8859_13' 'iso8859-13' 'iso-8859-13' 'latin7' 'latin-7' ))
+
+ (ISO8859_14 unicode ( 'iso8859_14' 'iso8859-14' 'iso-8859-14' 'latin8' 'latin-8' 'latin-celtic' ))
+
+ (ISO8859_15 unicode ( 'iso8859_15' 'iso8859-15' 'iso-8859-15' 'latin9' 'latin-9' 'iso-ir-203'))
+
+ (ISO8859_16 unicode ( 'iso8859_16' 'iso8859-16' 'iso-8859-16' 'latin10' 'latin-10' ))
+
+ (JIS0201 unicode ( 'jis0201' #'jisx0201.1976-0'))
+
+ (JIS0208 unicode ( jis0208 'jisx0208' 'jisx0208.1983-0' 'jisx0208.1990-0'))
+
+ (JIS0208_to_JIS7 jis0208 ( jis7 'jis-7' 'x-jis7' 'x-iso2022-jp' 'iso2022-jp'))
+
+ (JIS0212 unicode ( 'jis0212' ))
+
+ (JOHAB unicode ( 'johab' ))
+
+ (KOI7 unicode ( 'koi7' ))
+
+ (KOI8_R unicode ( #'koi8-r' 'cp878' ))
+
+ (KOI8_U unicode ( #'koi8-u' ))
+
+ (KSC5601 unicode ( #'ksc5601' ))
+
+ (MAC_Arabic unicode ( #'mac-arabic' 'macarabic' ))
+
+ (MAC_CentralEuropean unicode ( #'mac-centraleuropean' #'mac-centraleurope' 'maccentraleurope' 'maccentraleuropean' ))
+
+ (MAC_Croatian unicode ( #'mac-croatian' 'maccroatian'))
+
+ (MAC_Cyrillic unicode ( #'mac-cyrillic' 'maccyrillic' ))
+
+ (MAC_Dingbats unicode ( #'mac-dingbats' 'macdingbats' 'macdingbat'))
+
+ (MAC_Farsi unicode ( #'mac-farsi' 'macfarsi' ))
+
+ (MAC_Greek unicode ( #'mac-greek' #'macgreek' ))
+
+ (MAC_Hebrew unicode ( #'mac-hebrew' #'machebrew' ))
+
+ (MAC_Iceland unicode ( #'mac-iceland' #'maciceland' ))
+
+ (MAC_Japanese unicode ( #'mac-japanese' #'macjapanese' ))
+
+ (MAC_Korean unicode ( #'mac-korean' #'mackorean' ))
+
+ (MAC_Roman unicode ( #'mac-roman' #'macroman' ))
+
+ (MAC_Romanian unicode ( #'mac-romanian' #'macromanian' ))
+
+ (MAC_Symbol unicode ( #'mac-symbol' #'macsymbol' ))
+
+ (MAC_Thai unicode ( #'mac-thai' #'macthai' ))
+
+ (MAC_Turkish unicode ( #'mac-turkish' #'macturkish' ))
+
+ (MS_Ansi unicode ( #'ms-ansi' 'ms-cp1252' 'microsoft-cp1252' 'cp1252' 'microsoft-ansi' 'windows-1252' 'windows-latin1'))
+
+ (MS_Arabic unicode ( 'ms-arabic' 'ms-cp1256' 'microsoft-cp1256' 'cp1256' 'microsoft-arabic' 'windows-1256' ))
+
+ (MS_Baltic unicode ( 'ms-baltic' 'ms-cp1257' 'microsoft-cp1257' 'cp1257' 'microsoft-baltic' 'windows-1257' ))
+
+ (MS_Cyrillic unicode ( 'ms-cyrillic' 'ms-cp1251' 'microsoft-cp1251' 'cp1251' 'microsoft-cyrillic' 'windows-1251' ))
+
+ (MS_EastEuropean unicode ( 'ms-easteuropean' 'ms-ee' 'cp1250' 'ms-cp1250' 'microsoft-cp1250' 'microsoft-easteuropean' 'windows-1250' ))
+
+ (MS_Greek unicode ( 'ms-greek' 'ms-cp1253' 'microsoft-cp1253' 'cp1253' 'microsoft-greek' 'windows-1253' ))
+
+ (MS_Hebrew unicode ( 'ms-hebrew' 'ms-cp1255' 'microsoft-cp1255' 'cp1255' 'microsoft-hebrew' 'windows-1255' ))
+
+"/ (MS_Symbol unicode ( 'ms-symbol' 'microsoft-symbol' ))
+
+ (MS_Turkish unicode ( 'ms-turkish' 'ms-cp1254' 'microsoft-cp1254' 'cp1254' 'microsoft-turkish' 'windows-1254' ))
+
+ (NEXT unicode ( 'next' 'nextstep' ))
+
+ (SJIS unicode ( 'sjis' 'shiftjis' ))
+ ) triplesDo:[:className :decodesTo :encodesTo |
+ |implClass dict|
+
+ implClass := (Smalltalk at:#CharacterEncoderImplementations) at:className.
+ implClass isNil ifTrue:[
+ self halt:'missing encoder-class'
+ ] ifFalse:[
+ dict := EncoderClassesByName at:decodesTo ifAbsent:nil.
+ dict isNil ifTrue:[
+ EncoderClassesByName at:decodesTo put:(dict := Dictionary new).
+ ].
+ encodesTo do:[:eachEncodingAlias |
+ (dict includesKey:eachEncodingAlias) ifTrue:[
+ self halt:'conflicting alias'
+ ].
+ dict at:eachEncodingAlias put:implClass.
+ ]
+ ].
+ ].
"
self initialize
@@ -1089,7 +574,7 @@
]
]
].
- encoder := self cachedEncoderToEncodeFrom:oldEncoding into:newEncoding.
+ encoder := self encoderToEncodeFrom:oldEncoding into:newEncoding.
^ encoder encode:codePoint.
!
@@ -1128,7 +613,7 @@
]
].
- encoder := self cachedEncoderToEncodeFrom:oldEncoding into:newEncoding.
+ encoder := self encoderToEncodeFrom:oldEncoding into:newEncoding.
^ encoder encodeString:aString.
!
@@ -1273,10 +758,6 @@
^ (self nameWithoutPrefix asLowercase copyReplaceAll:$_ with:$-) asSymbol
!
-namesOfEncoding
- ^ Array with:(self nameWithoutPrefix asLowercase asSymbol)
-!
-
supportedExternalEncodings
"return an array of arrays containing the names of supported
encodings which are supported for external resources (i.e. files).
@@ -1334,13 +815,34 @@
decode:anEncoding
"given an integer in my encoding, return a unicode codePoint for it"
- ^ implementation decode:anEncoding
+ self subclassResponsibility
!
decodeString:anEncodedString
"given a string in my encoding, return a unicode-string for it"
- ^ implementation decodeString:anEncodedString
+ |newString|
+
+ newString := String new:(anEncodedString size).
+ 1 to:anEncodedString size do:[:idx |
+ |myCode uniCodePoint|
+
+ myCode := (anEncodedString at:idx) codePoint.
+ uniCodePoint := self decode:myCode.
+ uniCodePoint > 16rFF ifTrue:[
+ uniCodePoint > 16rFFFF ifTrue:[
+ newString bitsPerCharacter < 32 ifTrue:[
+ newString := Unicode32String fromString:newString.
+ ]
+ ] ifFalse:[
+ newString bitsPerCharacter < 16 ifTrue:[
+ newString := Unicode16String fromString:newString.
+ ]
+ ].
+ ].
+ newString at:idx put:(Character value:uniCodePoint).
+ ].
+ ^ newString
"
ISO8859_1 decodeString:'hello'
@@ -1350,13 +852,21 @@
encode:aCodePoint
"given a codePoint in unicode, return a byte in my encoding for it"
- ^ implementation encode:aCodePoint
+ self subclassResponsibility
!
encodeString:aUnicodeString
"given a string in unicode, return a string in my encoding for it"
- ^ implementation encodeString:aUnicodeString
+ |newString myCode uniCodePoint|
+
+ newString := self newString:(aUnicodeString size).
+ 1 to:aUnicodeString size do:[:idx |
+ uniCodePoint := (aUnicodeString at:idx) codePoint.
+ myCode := self encode:uniCodePoint.
+ newString at:idx put:(Character value:myCode).
+ ].
+ ^ newString
! !
!CharacterEncoder methodsFor:'error handling'!
@@ -1424,17 +934,6 @@
!CharacterEncoder methodsFor:'private'!
-implementation:anImplInstance
- implementation := anImplInstance
-!
-
-initialize
-
- "
- ISO8859_1 new initialize
- "
-!
-
newString:size
self subclassResponsibility
! !
@@ -1445,14 +944,6 @@
^ false
!
-maxCode
- ^ implementation maxCode
-!
-
-minCode
- ^ implementation minCode
-!
-
nameOfDecodedCode
"Most coders decode from their code into unicode / encode from unicode into their code.
There are a few exceptions to this, though - these must redefine this."
@@ -1464,26 +955,10 @@
^ self class nameOfEncoding
!
-namesOfEncoding
- ^ self class namesOfEncoding
-!
-
userFriendlyNameOfEncoding
^ self class userFriendlyNameOfEncoding
! !
-!ASCII class methodsFor:'queries'!
-
-namesOfEncoding
- ^ #( 'ascii' 'us-ascii' 'iso-ir-6' 'ibm-367' 'ms-cp367' 'cp367' 'iso646-us' 'ibm-cp367')
-! !
-
-!CP437 class methodsFor:'queries'!
-
-namesOfEncoding
- ^ #( 'cp437' 'cp-437' 'ibm-437' 'ms-cp437' 'microsoft-cp437' 'ibm-cp437' )
-! !
-
!CharacterEncoder::CompoundEncoder class methodsFor:'documentation'!
documentation
@@ -1550,235 +1025,6 @@
"
! !
-!CharacterEncoder::ISO10646_1 class methodsFor:'queries'!
-
-namesOfEncoding
- ^ #( 'unicode' 'iso10646-1' 'iso-10646-1' )
-!
-
-userFriendlyNameOfEncoding
- ^ 'Unicode'
-! !
-
-!CharacterEncoder::ISO10646_1 methodsFor:'encoding & decoding'!
-
-decode:aCode
- ^ aCode
-!
-
-decodeString:aString
- ^ aString
-!
-
-encode:aCode
- ^ aCode
-!
-
-encodeString:aString
- ^ aString
-! !
-
-!CharacterEncoder::ISO10646_to_UTF8 class methodsFor:'queries'!
-
-nameOfEncoding
- "I encode utf8 into unicode and vice versa"
-
- ^ #'utf8'
-!
-
-namesOfEncoding
- "I encode utf8 into unicode and vice versa"
-
- ^ #( 'utf8' 'utf-8' )
-! !
-
-!ISO8859_1 class methodsFor:'queries'!
-
-namesOfEncoding
- ^ #( 'iso8859-1' 'iso-8859-1' 'latin-1' 'latin1' 'iso-ir-100' 'ibm-819' 'ms-cp819' 'ibm-cp819' )
-! !
-
-!ISO8859_1 methodsFor:'encoding & decoding'!
-
-decode:codeArg
- "Automagically generated by generateCode - do not modify.
- Decode from my encoding into unicode."
-
- |code "{ Class: SmallInteger }"|
-
- code := codeArg.
- code > 16rFF ifTrue:[
- ^ self decodingError.
- ].
- ^ code.
-!
-
-encode:unicodeArg
- "Automagically generated by generateCode - do not modify.
- Encode from unicode into my encoding."
-
- |unicode "{ Class: SmallInteger }"|
-
- unicode := unicodeArg.
- unicode > 16rFF ifTrue:[
- ^ self encodingError.
- ].
- ^ unicode.
-! !
-
-!ISO8859_1 methodsFor:'private'!
-
-newString:size
- ^ String new:size
-! !
-
-!SingleByteEncoder class methodsFor:'instance creation'!
-
-new
- "singleton - there is only one"
-
- mySingleInstance isNil ifTrue:[
- mySingleInstance := super new.
- ].
- ^ mySingleInstance
-! !
-
-!SingleByteEncoder class methodsFor:'private'!
-
-flushSingletons
- mySingleInstance := nil.
- super flushSingletons
-
- "
- self flushSingletons
- "
-! !
-
-!SingleByteEncoder class methodsFor:'queries'!
-
-maxCode
- ^ 255
-!
-
-minCode
- ^ 0
-! !
-
-!SingleByteEncoder class methodsFor:'testing'!
-
-isAbstract
- self == CharacterEncoder::SingleByteEncoder ifTrue:[^ true].
- ^ super isAbstract
-! !
-
-!SingleByteEncoder methodsFor:'private'!
-
-newString:size
- ^ String uninitializedNew:size
-! !
-
-!ISO8859_11 class methodsFor:'queries'!
-
-namesOfEncoding
- ^ #( 'iso8859-11' 'iso-8859-11' 'thai' )
-!
-
-userFriendlyNameOfEncoding
- ^ 'Thai'
-! !
-
-!ISO8859_13 class methodsFor:'queries'!
-
-namesOfEncoding
- ^ #( 'iso8859-13' 'iso-8859-13' 'latin7' 'latin-7' )
-! !
-
-!ISO8859_14 class methodsFor:'queries'!
-
-namesOfEncoding
- ^ #( 'iso8859-14' 'iso-8859-14' 'latin8' 'latin-8' 'latin-celtic' )
-! !
-
-!ISO8859_15 class methodsFor:'queries'!
-
-namesOfEncoding
- ^ #( 'iso8859-15' 'iso-8859-15' 'latin9' 'latin-9' 'iso-ir-203')
-! !
-
-!ISO8859_16 class methodsFor:'queries'!
-
-namesOfEncoding
- ^ #( 'iso8859-16' 'iso-8859-16' 'latin10' 'latin-10' )
-! !
-
-!ISO8859_2 class methodsFor:'queries'!
-
-namesOfEncoding
- ^ #( 'iso8859-2' 'iso-8859-2' 'latin2' 'latin-2' 'iso-ir-101')
-!
-
-userFriendlyNameOfEncoding
- ^ 'Central European'
-! !
-
-!ISO8859_3 class methodsFor:'queries'!
-
-namesOfEncoding
- ^ #( 'iso8859-3' 'iso-8859-3' 'latin3' 'latin-3' 'iso-ir-109')
-! !
-
-!ISO8859_4 class methodsFor:'queries'!
-
-namesOfEncoding
- ^ #( 'iso8859-4' 'iso-8859-4' 'latin4' 'latin-4' 'iso-ir-110')
-! !
-
-!ISO8859_5 class methodsFor:'queries'!
-
-namesOfEncoding
- ^ #( 'iso8859-5' 'iso-8859-5' 'cyrillic' 'iso-ir-144' )
-!
-
-userFriendlyNameOfEncoding
- ^ 'Cyrillic'
-! !
-
-!ISO8859_6 class methodsFor:'queries'!
-
-namesOfEncoding
- ^ #( 'iso8859-6' 'iso-8859-6' 'arabic' 'asmo-708' 'ecma-114' 'iso-ir-127' )
-!
-
-userFriendlyNameOfEncoding
- ^ 'Arabic'
-! !
-
-!ISO8859_7 class methodsFor:'queries'!
-
-namesOfEncoding
- ^ #( 'iso8859-7' 'iso-8859-7' 'greek' 'iso-ir-126' 'ecma-118')
-!
-
-userFriendlyNameOfEncoding
- ^ 'Greek'
-! !
-
-!ISO8859_8 class methodsFor:'queries'!
-
-namesOfEncoding
- ^ #( 'iso8859-8' 'iso-8859-8' 'hebrew' 'iso-ir-138' )
-!
-
-userFriendlyNameOfEncoding
- ^ 'Hebrew'
-! !
-
-!ISO8859_9 class methodsFor:'queries'!
-
-namesOfEncoding
- ^ #( 'iso8859-9' 'iso-8859-9' 'latin5' 'latin-5' 'iso-ir-148')
-! !
-
!CharacterEncoder::InverseEncoder class methodsFor:'documentation'!
documentation
@@ -1821,463 +1067,6 @@
nextPutAll:(decoder nameOfDecodedCode)
! !
-!JIS0201 class methodsFor:'queries'!
-
-namesOfEncoding
- ^ #( 'jis0201' #'jisx0201.1976-0')
-! !
-
-!CharacterEncoder::JIS0208 class methodsFor:'constants'!
-
-defaultRomanCharacterValue
- ^ 16r2222
-!
-
-romanTable
- "return a table to decode from roman ascii to 16 bit JIS."
-
- ^ #(
- " " "excla" " # " " $ " " % " " & " " ' "
- 16r2121 16r212a 16r2149 16r2174 16r2170 16r2173 16r2175 16r2147 "/ 20
- " ( " " ) " " * " " + " " , " " - " " . " " / "
- 16r214a 16r214b 16r2176 16r215c 16r2124 16r215d 16r2125 16r213f "/ 28
- " 0 " " 1 " " 2 " " 3 " " 4 " " 5 " " 6 " " 7 "
- 16r2330 16r2331 16r2332 16r2333 16r2334 16r2335 16r2336 16r2337 "/ 30
- " 8 " " 9 " " : " " ; " " < " " = " " > " " ? "
- 16r2338 16r2339 16r2127 16r2128 16r2163 16r2161 16r2164 16r2129 "/ 38
- " @ " " A " " B " " C " " D " " E " " F " " G "
- 16r2177 16r2341 16r2342 16r2343 16r2344 16r2345 16r2346 16r2347 "/ 40
- " H " " I " " J " " K " " L " " M " " N " " O "
- 16r2348 16r2349 16r234a 16r234b 16r234c 16r234d 16r234e 16r234f "/ 48
- " P " " Q " " R " " S " " T " " U " " V " " W "
- 16r2350 16r2351 16r2352 16r2353 16r2354 16r2355 16r2356 16r2357 "/ 50
- " X " " Y " " Z " " [ " " \ " " ] " " ^ " " _ "
- 16r2358 16r2359 16r235a 16r214e 16r2140 16r214f 16r2130 16r2132 "/ 58
- " ` " " a " " b " " c " " d " " e " " f " " g "
- 16r2146 16r2361 16r2362 16r2363 16r2364 16r2365 16r2366 16r2367 "/ 60
- " h " " i " " j " " k " " l " " m " " n " " o "
- 16r2368 16r2369 16r236a 16r236b 16r236c 16r236d 16r236e 16r236f "/ 68
- " p " " q " " r " " s " " t " " u " " v " " w "
- 16r2370 16r2371 16r2372 16r2373 16r2374 16r2375 16r2376 16r2377 "/ 70
- " x " " y " " z " " { " " | " " } " " ~ "
- 16r2378 16r2379 16r237a 16r2150 16r2143 16r2151 16r2141 16r2121 "/ 78
-
- "/ actually: half-width katakana
-
- 16r2121 16r2123 16r2156 16r2157 16r2122 16r2126 16r2572 16r2521 "/ 80
- 16r2523 16r2525 16r2527 16r2529 16r2563 16r2565 16r2567 16r2543 "/ 88
- 16r213c 16r2522 16r2524 16r2526 16r2528 16r252a 16r252b 16r252d "/ 90
- 16r252f 16r2531 16r2533 16r2535 16r2537 16r2539 16r253b 16r253d "/ 98
- 16r253f 16r2541 16r2544 16r2546 16r2548 16r254a 16r254b 16r254c "/ A0
- 16r254d 16r254e 16r254f 16r2552 16r2555 16r2558 16r255b 16r255e "/ A8
- 16r255f 16r2560 16r2561 16r2562 16r2564 16r2566 16r2568 16r2569 "/ B0
- 16r256a 16r256b 16r256c 16r256d 16r256f 16r2573 16r212b 16r212c "/ B8
- ).
-
- "Created: 30.6.1997 / 14:25:53 / cg"
- "Modified: 30.6.1997 / 19:11:45 / cg"
-! !
-
-!CharacterEncoder::JIS0208 class methodsFor:'queries'!
-
-namesOfEncoding
- ^ #( 'jis0208' 'jisx0208' 'jisx0208.1983-0' 'jisx0208.1990-0')
-! !
-
-!CharacterEncoder::JIS0208_to_JIS7 class methodsFor:'constants'!
-
-jis7KanjiEscapeSequence
- "return the escape sequence used to switch to kanji in jis7 encoded strings.
- This happens to be the same as ISO2022-JP's escape sequence."
-
- Jis7KanjiEscapeSequence isNil ifTrue:[
- Jis7KanjiEscapeSequence := Character esc asString , '$B'.
- ].
- ^ Jis7KanjiEscapeSequence.
-
- "Created: 26.2.1996 / 17:38:08 / cg"
- "Modified: 30.6.1997 / 16:03:16 / cg"
-!
-
-jis7KanjiOldEscapeSequence
- "return the escape sequence used to switch to kanji in some old jis7 encoded strings."
-
- Jis7KanjiOldEscapeSequence isNil ifTrue:[
- Jis7KanjiOldEscapeSequence := Character esc asString , '$@'..
- ].
- ^ Jis7KanjiOldEscapeSequence.
-!
-
-jis7RomanEscapeSequence
- "return the escape sequence used to switch to roman in jis7 encoded strings"
-
- Jis7RomanEscapeSequence isNil ifTrue:[
- Jis7RomanEscapeSequence := Character esc asString , '(J'.
- ].
- ^ Jis7RomanEscapeSequence.
-
- "Created: 26.2.1996 / 17:38:08 / cg"
- "Modified: 30.6.1997 / 16:03:16 / cg"
-!
-
-jisISO2022EscapeSequence
- "return the escape sequence used to switch to kanji in iso2022 encoded strings"
-
- JisISO2022EscapeSequence isNil ifTrue:[
- JisISO2022EscapeSequence := Character esc asString , '&@' , Character esc asString , '$B'.
- ].
- ^ JisISO2022EscapeSequence.
-! !
-
-!CharacterEncoder::JIS0208_to_JIS7 class methodsFor:'documentation'!
-
-examples
-"
- Encoding (jis0208 to jis-7)
- |t|
-
- t := JIS0208_to_JIS7 decodeString:'hello'.
- JIS0208_to_JIS7 encodeString:t.
-
-
-
- Decoding (jis-7 to jis0208):
-
- JIS0208_to_JIS7 decodeString:'hello'
-
- ending with a crippled escape:
-
- |s|
- s := 'hello' copyWith:Character esc.
- JIS0208_to_JIS7 decodeString:s
-
- |s|
- s := 'hello' copyWith:Character esc.
- s := s copyWith:$A.
- JIS0208_to_JIS7 decodeString:s
-
- |s|
- s := 'hello' copyWith:Character esc.
- s := s copyWith:$$.
- JIS0208_to_JIS7 decodeString:s
-
- |s|
- s := 'hello' copyWith:Character esc.
- s := s copyWith:$$.
- s := s copyWith:$A.
- JIS0208_to_JIS7 decodeString:s
-
- ending with a KANJI-in, but no more chars:
-
- |s|
- s := 'hello' copyWith:Character esc.
- s := s copyWith:$$.
- s := s copyWith:$B.
- JIS0208_to_JIS7 decodeString:s
-
- ending with a KANJI-in, followed by $3 (KO):
-
- |s|
- s := 'hello' copyWith:Character esc.
- s := s copyWith:$$.
- s := s copyWith:$B.
- s := s , '$3'.
- JIS0208_to_JIS7 decodeString:s
-
- ending with a KANJI-in, followed by $3$l$OF| (KO RE HA NI):
-
- |s|
- s := 'hello' copyWith:Character esc.
- s := s copyWith:$$.
- s := s copyWith:$B.
- s := s , '$3$l$OF|'.
- JIS0208_to_JIS7 decodeString:s
-
- a KO in between:
-
- |s|
- s := 'hello' copyWith:Character esc.
- s := s copyWith:$$.
- s := s copyWith:$B.
- s := s , '$3'.
- s := s copyWith:Character esc.
- s := s copyWith:$(.
- s := s copyWith:$B.
- s := s , 'hello'.
- JIS0208_to_JIS7 decodeString:s
-
- I dont know what that means ;-):
-
- |s t l|
- s := 'kterm ' copyWith:Character esc.
- s := s copyWith:$$.
- s := s copyWith:$B.
- s := s , '$N4A;zC<Kv%(%_%e%l!!<%?'.
- s := s copyWith:Character esc.
- s := s copyWith:$(.
- s := s copyWith:$B.
- s := s , ' kterm'.
- t := JIS0208_to_JIS7 decodeString:s.
-
- l := Label new.
- l label:t.
- l font:(Font family:'k14' face:nil style:nil size:nil).
- l font:(Font family:'gothic' size:17).
- l font:(Font family:'mincho' size:23).
- l realize
-"
-! !
-
-!CharacterEncoder::JIS0208_to_JIS7 class methodsFor:'queries'!
-
-nameOfDecodedCode
- "I encode jis0208 into jis7 and vice versa"
-
- ^ #'jis0208'
-!
-
-nameOfEncoding
- "I encode jis0208 into jis7 and vice versa"
-
- ^ #'jis7'
-!
-
-namesOfEncoding
- "I encode jis0208 into jis7 and vice versa"
-
- ^ #( 'jis7' 'jis-7' 'x-jis7' 'x-iso2022-jp' 'iso2022-jp')
-! !
-
-!CharacterEncoder::JIS0212 class methodsFor:'queries'!
-
-namesOfEncoding
- ^ #( 'jis0212' )
-! !
-
-!CharacterEncoder::JOHAB class methodsFor:'queries'!
-
-namesOfEncoding
- ^ #( 'johab' )
-! !
-
-!KOI7 class methodsFor:'queries'!
-
-namesOfEncoding
- ^ #( #'koi7' )
-! !
-
-!KOI8_R class methodsFor:'queries'!
-
-namesOfEncoding
- ^ #( #'koi8-r' 'cp878' )
-!
-
-userFriendlyNameOfEncoding
- ^ 'Cyrillic'
-! !
-
-!CharacterEncoder::KOI8_U class methodsFor:'queries'!
-
-namesOfEncoding
- ^ #( #'koi8-u' )
-!
-
-userFriendlyNameOfEncoding
- ^ 'Cyrillic (Ukraine)'
-! !
-
-!CharacterEncoder::KSC5601 class methodsFor:'queries'!
-
-namesOfEncoding
- ^ #( #'ksc5601' )
-! !
-
-!MAC_Arabic class methodsFor:'queries'!
-
-namesOfEncoding
- ^ #( #'mac-arabic' 'macarabic' )
-! !
-
-!MAC_CentralEuropean class methodsFor:'queries'!
-
-namesOfEncoding
- ^ #( #'mac-centraleuropean' #'mac-centraleurope' 'maccentraleurope' 'maccentraleuropean' )
-! !
-
-!MAC_Croatian class methodsFor:'queries'!
-
-namesOfEncoding
- ^ #( #'mac-croatian' 'maccroatian')
-! !
-
-!MAC_Cyrillic class methodsFor:'queries'!
-
-namesOfEncoding
- ^ #( #'mac-cyrillic' 'maccyrillic' )
-! !
-
-!MAC_Dingbats class methodsFor:'queries'!
-
-namesOfEncoding
- ^ #( #'mac-dingbats' 'macdingbats' 'macdingbat')
-! !
-
-!MAC_Farsi class methodsFor:'queries'!
-
-namesOfEncoding
- ^ #( #'mac-farsi' )
-! !
-
-!MAC_Greek class methodsFor:'queries'!
-
-namesOfEncoding
- ^ #( #'mac-greek' #'macgreek' )
-! !
-
-!MAC_Hebrew class methodsFor:'queries'!
-
-namesOfEncoding
- ^ #( #'mac-hebrew' #'machebrew' )
-! !
-
-!MAC_Iceland class methodsFor:'queries'!
-
-namesOfEncoding
- ^ #( #'mac-iceland' #'maciceland')
-! !
-
-!CharacterEncoder::MAC_Japanese class methodsFor:'queries'!
-
-namesOfEncoding
- ^ #( #'mac-japanese' )
-! !
-
-!CharacterEncoder::MAC_Korean class methodsFor:'queries'!
-
-namesOfEncoding
- ^ #( #'mac-korean' )
-! !
-
-!MAC_Roman class methodsFor:'queries'!
-
-namesOfEncoding
- ^ #( #'mac-roman' #'macroman')
-! !
-
-!MAC_Romanian class methodsFor:'queries'!
-
-namesOfEncoding
- ^ #( #'mac-romanian' #'macromania' )
-! !
-
-!MAC_Symbol class methodsFor:'queries'!
-
-namesOfEncoding
- ^ #( #'mac-symbol' #'macsymbol' )
-! !
-
-!CharacterEncoder::MAC_Thai class methodsFor:'queries'!
-
-namesOfEncoding
- ^ #( #'mac-thai' #'macthai' )
-! !
-
-!MAC_Turkish class methodsFor:'queries'!
-
-namesOfEncoding
- ^ #( #'mac-tukish' #'macturkish' )
-! !
-
-!MS_Ansi class methodsFor:'queries'!
-
-namesOfEncoding
- ^ #( #'ms-ansi' 'ms-cp1252' 'microsoft-cp1252' 'cp1252' 'microsoft-ansi' 'windows-1252' 'windows-latin1')
-! !
-
-!MS_Arabic class methodsFor:'queries'!
-
-namesOfEncoding
- ^ #( 'ms-arabic' 'ms-cp1256' 'microsoft-cp1256' 'cp1256' 'microsoft-arabic' 'windows-1256' )
-!
-
-userFriendlyNameOfEncoding
- ^ 'Arabic'
-! !
-
-!MS_Baltic class methodsFor:'queries'!
-
-namesOfEncoding
- ^ #( 'ms-baltic' 'ms-cp1257' 'microsoft-cp1257' 'cp1257' 'microsoft-baltic' 'windows-1257' )
-!
-
-userFriendlyNameOfEncoding
- ^ 'Baltic'
-! !
-
-!MS_Cyrillic class methodsFor:'queries'!
-
-namesOfEncoding
- ^ #( 'ms-cyrillic' 'ms-cp1251' 'microsoft-cp1251' 'cp1251' 'microsoft-cyrillic' 'windows-1251' )
-!
-
-userFriendlyNameOfEncoding
- ^ 'Cyrillic'
-! !
-
-!MS_EastEuropean class methodsFor:'queries'!
-
-namesOfEncoding
- ^ #( 'ms-easteuropean' 'ms-ee' 'cp1250' 'ms-cp1250' 'microsoft-cp1250' 'microsoft-easteuropean' 'windows-1250' )
-!
-
-userFriendlyNameOfEncoding
- ^ 'East European'
-! !
-
-!MS_Greek class methodsFor:'queries'!
-
-namesOfEncoding
- ^ #( 'ms-greek' 'ms-cp1253' 'microsoft-cp1253' 'cp1253' 'microsoft-greek' 'windows-1253' )
-!
-
-userFriendlyNameOfEncoding
- ^ 'Greek'
-! !
-
-!MS_Hebrew class methodsFor:'mapping'!
-
-userFriendlyNameOfEncoding
- ^ 'Hebrew'
-! !
-
-!MS_Hebrew class methodsFor:'queries'!
-
-namesOfEncoding
- ^ #( 'ms-hebrew' 'ms-cp1255' 'microsoft-cp1255' 'cp1255' 'microsoft-hebrew' 'windows-1255' )
-! !
-
-!MS_Symbol class methodsFor:'queries'!
-
-namesOfEncoding
- ^ #( 'ms-symbol' 'ms-cp1254' 'microsoft-cp1254' 'cp1254' 'microsoft-symbol' 'windows-1254' )
-! !
-
-!MS_Turkish class methodsFor:'queries'!
-
-namesOfEncoding
- ^ #( 'ms-turkish' 'ms-cp1254' 'microsoft-cp1254' 'cp1254' 'microsoft-turkish' 'windows-1254' )
-!
-
-userFriendlyNameOfEncoding
- ^ 'Turkish'
-! !
-
-!NEXT class methodsFor:'mapping'!
-
-namesOfEncoding
- ^ #( 'next' 'nextstep' )
-! !
-
!CharacterEncoder::NullEncoder class methodsFor:'documentation'!
documentation
@@ -2286,28 +1075,6 @@
"
! !
-!CharacterEncoder::NullEncoder class methodsFor:'instance creation'!
-
-new
- "singleton - there is only one"
-
- mySingleInstance isNil ifTrue:[
- mySingleInstance := self basicNew initialize.
- ].
- ^ mySingleInstance
-! !
-
-!CharacterEncoder::NullEncoder class methodsFor:'private'!
-
-flushSingletons
- mySingleInstance := nil.
- super flushSingletons
-
- "
- self flushSingletons
- "
-! !
-
!CharacterEncoder::NullEncoder methodsFor:'encoding & decoding'!
decode:aCode
@@ -2340,18 +1107,6 @@
generateEncoderCode
! !
-!CharacterEncoder::SJIS class methodsFor:'mapping'!
-
-namesOfEncoding
- ^ #( 'sjis' 'shiftjis' )
-! !
-
-!ISO8859_10 class methodsFor:'queries'!
-
-namesOfEncoding
- ^ #( 'iso8859-10' 'iso-8859-10' 'latin6' 'latin-6' 'iso-ir-157')
-! !
-
!CharacterEncoder::TwoStepEncoder class methodsFor:'documentation'!
documentation
@@ -2405,7 +1160,7 @@
!CharacterEncoder class methodsFor:'documentation'!
version
- ^ '$Header: /cvs/stx/stx/libbasic/CharacterEncoder.st,v 1.51 2004-03-08 17:06:33 cg Exp $'
+ ^ '$Header: /cvs/stx/stx/libbasic/CharacterEncoder.st,v 1.52 2004-03-08 23:04:03 cg Exp $'
! !
CharacterEncoder initialize!
--- a/CharacterEncoderImplementation.st Mon Mar 08 20:05:11 2004 +0100
+++ b/CharacterEncoderImplementation.st Tue Mar 09 00:05:08 2004 +0100
@@ -10,67 +10,14 @@
!
-!CharacterEncoderImplementation methodsFor:'encoding & decoding'!
-
-decode:anEncoding
- "given an integer in my encoding, return a unicode codePoint for it"
-
- self subclassResponsibility
-!
-
-decodeString:anEncodedString
- "given a string in my encoding, return a unicode-string for it"
-
- |newString|
-
- newString := String new:(anEncodedString size).
- 1 to:anEncodedString size do:[:idx |
- |myCode uniCodePoint|
+!CharacterEncoderImplementation class methodsFor:'instance creation'!
- myCode := (anEncodedString at:idx) codePoint.
- uniCodePoint := self decode:myCode.
- uniCodePoint > 16rFF ifTrue:[
- uniCodePoint > 16rFFFF ifTrue:[
- newString bitsPerCharacter < 32 ifTrue:[
- newString := Unicode32String fromString:newString.
- ]
- ] ifFalse:[
- newString bitsPerCharacter < 16 ifTrue:[
- newString := Unicode16String fromString:newString.
- ]
- ].
- ].
- newString at:idx put:(Character value:uniCodePoint).
- ].
- ^ newString
-
- "
- ISO8859_1 decodeString:'hello'
- "
-!
-
-encode:aCodePoint
- "given a codePoint in unicode, return a byte in my encoding for it"
-
- self subclassResponsibility
-!
-
-encodeString:aUnicodeString
- "given a string in unicode, return a string in my encoding for it"
-
- |newString myCode uniCodePoint|
-
- newString := self newString:(aUnicodeString size).
- 1 to:aUnicodeString size do:[:idx |
- uniCodePoint := (aUnicodeString at:idx) codePoint.
- myCode := self encode:uniCodePoint.
- newString at:idx put:(Character value:myCode).
- ].
- ^ newString
+new
+ ^ self basicNew
! !
!CharacterEncoderImplementation class methodsFor:'documentation'!
version
- ^ '$Header: /cvs/stx/stx/libbasic/Attic/CharacterEncoderImplementation.st,v 1.1 2004-03-08 17:08:27 cg Exp $'
+ ^ '$Header: /cvs/stx/stx/libbasic/Attic/CharacterEncoderImplementation.st,v 1.2 2004-03-08 23:03:50 cg Exp $'
! !
--- a/CharacterEncoderImplementations__ISO10646_1.st Mon Mar 08 20:05:11 2004 +0100
+++ b/CharacterEncoderImplementations__ISO10646_1.st Tue Mar 09 00:05:08 2004 +0100
@@ -2,7 +2,7 @@
"{ NameSpace: CharacterEncoderImplementations }"
-CharacterEncoderImplementation subclass:#ISO10646_1
+CharacterEncoder subclass:#ISO10646_1
instanceVariableNames:''
classVariableNames:''
poolDictionaries:''
@@ -37,5 +37,5 @@
!ISO10646_1 class methodsFor:'documentation'!
version
- ^ '$Header: /cvs/stx/stx/libbasic/CharacterEncoderImplementations__ISO10646_1.st,v 1.2 2004-03-08 17:09:10 cg Exp $'
+ ^ '$Header: /cvs/stx/stx/libbasic/CharacterEncoderImplementations__ISO10646_1.st,v 1.3 2004-03-08 23:03:53 cg Exp $'
! !
--- a/CharacterEncoderImplementations__MS_Symbol.st Mon Mar 08 20:05:11 2004 +0100
+++ b/CharacterEncoderImplementations__MS_Symbol.st Tue Mar 09 00:05:08 2004 +0100
@@ -13,11 +13,37 @@
!MS_Symbol class methodsFor:'mapping'!
mapFileURL2_relativePathName
- ^ 'CP1254'
+ ^ 'CP1258'
+!
+
+mapping
+"
+# From: http://std.dkuug.dk/i18n/charmaps/CP1258
+
+<!!DOCTYPE HTML PUBLIC '-//IETF//DTD HTML 2.0//EN'>
+<HTML><HEAD>
+<TITLE>300 Multiple Choices</TITLE>
+</HEAD><BODY>
+<H1>Multiple Choices</H1>
+The document name you requested (<code>/i18n/charmaps/CP1258</code>) could not be found on this server.
+However, we found documents with names similar to the one you requested.<p>Available documents:
+<ul>
+<li><a href='/i18n/charmaps/CP1250'>/i18n/charmaps/CP1250</a> (mistyped character)
+<li><a href='/i18n/charmaps/CP1251'>/i18n/charmaps/CP1251</a> (mistyped character)
+<li><a href='/i18n/charmaps/CP1252'>/i18n/charmaps/CP1252</a> (mistyped character)
+<li><a href='/i18n/charmaps/CP1253'>/i18n/charmaps/CP1253</a> (mistyped character)
+<li><a href='/i18n/charmaps/CP1254'>/i18n/charmaps/CP1254</a> (mistyped character)
+<li><a href='/i18n/charmaps/CP1255'>/i18n/charmaps/CP1255</a> (mistyped character)
+<li><a href='/i18n/charmaps/CP1256'>/i18n/charmaps/CP1256</a> (mistyped character)
+<li><a href='/i18n/charmaps/CP1257'>/i18n/charmaps/CP1257</a> (mistyped character)
+</ul>
+</BODY></HTML>
+
+"
! !
!MS_Symbol class methodsFor:'documentation'!
version
- ^ '$Header: /cvs/stx/stx/libbasic/CharacterEncoderImplementations__MS_Symbol.st,v 1.2 2004-03-08 17:09:54 cg Exp $'
+ ^ '$Header: /cvs/stx/stx/libbasic/CharacterEncoderImplementations__MS_Symbol.st,v 1.3 2004-03-08 23:03:46 cg Exp $'
! !
--- a/CharacterEncoderImplementations__MS_Turkish.st Mon Mar 08 20:05:11 2004 +0100
+++ b/CharacterEncoderImplementations__MS_Turkish.st Tue Mar 09 00:05:08 2004 +0100
@@ -13,7 +13,7 @@
!MS_Turkish class methodsFor:'mapping'!
mapFileURL2_relativePathName
- ^ 'CP1254'
+ ^ 'CP1258'
!
mapping
@@ -285,5 +285,5 @@
!MS_Turkish class methodsFor:'documentation'!
version
- ^ '$Header: /cvs/stx/stx/libbasic/CharacterEncoderImplementations__MS_Turkish.st,v 1.2 2004-03-08 17:07:34 cg Exp $'
+ ^ '$Header: /cvs/stx/stx/libbasic/CharacterEncoderImplementations__MS_Turkish.st,v 1.3 2004-03-08 23:03:48 cg Exp $'
! !
--- a/Date.st Mon Mar 08 20:05:11 2004 +0100
+++ b/Date.st Tue Mar 09 00:05:08 2004 +0100
@@ -675,6 +675,9 @@
!
defaultFormatString
+ (DefaultFormats isNil or:[EnvironmentChange]) ifTrue:[
+ self initNames
+ ].
^ DefaultFormats at:Language ifAbsent:(DefaultFormats at:#en).
"
@@ -811,6 +814,9 @@
!
longFormatString
+ (LongFormats isNil or:[EnvironmentChange]) ifTrue:[
+ self initNames
+ ].
^ LongFormats at:Language ifAbsent:(LongFormats at:#en).
"
@@ -894,6 +900,9 @@
!
shortFormatString
+ (ShortFormats isNil or:[EnvironmentChange]) ifTrue:[
+ self initNames
+ ].
^ ShortFormats at:Language ifAbsent:(ShortFormats at:#en).
"
@@ -990,10 +999,10 @@
initialize
"check for case where Resource-classes are absent"
- ResourcePack isNil ifTrue:[
- self initNames
- ] ifFalse:[
- Smalltalk addDependent:self.
+ self initNames.
+
+ Smalltalk addDependent:self.
+ Language ~= 'en' ifTrue:[
EnvironmentChange := true
]
!
@@ -1140,14 +1149,14 @@
'nov'
'dec').
- DayNames at:'en' put:enDayNames.
- DayAbbrevs at:'en' put:enDayAbbrevs.
- MonthNames at:'en' put:enMonthNames.
- MonthAbbrevs at:'en' put:enMonthAbbrevs.
-
- DefaultFormats at:'en' put:(enDefaultFormat := '%d-%m-%y').
- ShortFormats at:'en' put:(enShortFormat := '%d-%m-%y').
- LongFormats at:'en' put:(enLongFormat := '%(dayName), %d-%m-%y').
+ DayNames at:#'en' put:enDayNames.
+ DayAbbrevs at:#'en' put:enDayAbbrevs.
+ MonthNames at:#'en' put:enMonthNames.
+ MonthAbbrevs at:#'en' put:enMonthAbbrevs.
+
+ DefaultFormats at:#'en' put:(enDefaultFormat := '%d-%m-%y').
+ ShortFormats at:#'en' put:(enShortFormat := '%d-%m-%y').
+ LongFormats at:#'en' put:(enLongFormat := '%(dayName), %d-%m-%y').
lang := Smalltalk language asSymbol.
lang ~~ #'en' ifTrue:[
@@ -2274,6 +2283,9 @@
|format|
+ (DefaultFormats isNil or:[EnvironmentChange]) ifTrue:[
+ self initNames
+ ].
format := DefaultFormats at:Language ifAbsent:[DefaultFormats at:#en].
self printOn:aStream format:format.
@@ -2393,7 +2405,7 @@
!Date class methodsFor:'documentation'!
version
- ^ '$Header: /cvs/stx/stx/libbasic/Date.st,v 1.85 2004-03-08 15:44:44 cg Exp $'
+ ^ '$Header: /cvs/stx/stx/libbasic/Date.st,v 1.86 2004-03-08 23:05:08 cg Exp $'
! !
Date initialize!
--- a/Encoder_ISO10646_1.st Mon Mar 08 20:05:11 2004 +0100
+++ b/Encoder_ISO10646_1.st Tue Mar 09 00:05:08 2004 +0100
@@ -2,7 +2,7 @@
"{ NameSpace: CharacterEncoderImplementations }"
-CharacterEncoderImplementation subclass:#ISO10646_1
+CharacterEncoder subclass:#ISO10646_1
instanceVariableNames:''
classVariableNames:''
poolDictionaries:''
@@ -37,5 +37,5 @@
!ISO10646_1 class methodsFor:'documentation'!
version
- ^ '$Header: /cvs/stx/stx/libbasic/Attic/Encoder_ISO10646_1.st,v 1.2 2004-03-08 17:09:10 cg Exp $'
+ ^ '$Header: /cvs/stx/stx/libbasic/Attic/Encoder_ISO10646_1.st,v 1.3 2004-03-08 23:03:53 cg Exp $'
! !
--- a/Encoder_MS_Symbol.st Mon Mar 08 20:05:11 2004 +0100
+++ b/Encoder_MS_Symbol.st Tue Mar 09 00:05:08 2004 +0100
@@ -13,11 +13,37 @@
!MS_Symbol class methodsFor:'mapping'!
mapFileURL2_relativePathName
- ^ 'CP1254'
+ ^ 'CP1258'
+!
+
+mapping
+"
+# From: http://std.dkuug.dk/i18n/charmaps/CP1258
+
+<!!DOCTYPE HTML PUBLIC '-//IETF//DTD HTML 2.0//EN'>
+<HTML><HEAD>
+<TITLE>300 Multiple Choices</TITLE>
+</HEAD><BODY>
+<H1>Multiple Choices</H1>
+The document name you requested (<code>/i18n/charmaps/CP1258</code>) could not be found on this server.
+However, we found documents with names similar to the one you requested.<p>Available documents:
+<ul>
+<li><a href='/i18n/charmaps/CP1250'>/i18n/charmaps/CP1250</a> (mistyped character)
+<li><a href='/i18n/charmaps/CP1251'>/i18n/charmaps/CP1251</a> (mistyped character)
+<li><a href='/i18n/charmaps/CP1252'>/i18n/charmaps/CP1252</a> (mistyped character)
+<li><a href='/i18n/charmaps/CP1253'>/i18n/charmaps/CP1253</a> (mistyped character)
+<li><a href='/i18n/charmaps/CP1254'>/i18n/charmaps/CP1254</a> (mistyped character)
+<li><a href='/i18n/charmaps/CP1255'>/i18n/charmaps/CP1255</a> (mistyped character)
+<li><a href='/i18n/charmaps/CP1256'>/i18n/charmaps/CP1256</a> (mistyped character)
+<li><a href='/i18n/charmaps/CP1257'>/i18n/charmaps/CP1257</a> (mistyped character)
+</ul>
+</BODY></HTML>
+
+"
! !
!MS_Symbol class methodsFor:'documentation'!
version
- ^ '$Header: /cvs/stx/stx/libbasic/Attic/Encoder_MS_Symbol.st,v 1.2 2004-03-08 17:09:54 cg Exp $'
+ ^ '$Header: /cvs/stx/stx/libbasic/Attic/Encoder_MS_Symbol.st,v 1.3 2004-03-08 23:03:46 cg Exp $'
! !
--- a/Encoder_MS_Turkish.st Mon Mar 08 20:05:11 2004 +0100
+++ b/Encoder_MS_Turkish.st Tue Mar 09 00:05:08 2004 +0100
@@ -13,7 +13,7 @@
!MS_Turkish class methodsFor:'mapping'!
mapFileURL2_relativePathName
- ^ 'CP1254'
+ ^ 'CP1258'
!
mapping
@@ -285,5 +285,5 @@
!MS_Turkish class methodsFor:'documentation'!
version
- ^ '$Header: /cvs/stx/stx/libbasic/Attic/Encoder_MS_Turkish.st,v 1.2 2004-03-08 17:07:34 cg Exp $'
+ ^ '$Header: /cvs/stx/stx/libbasic/Attic/Encoder_MS_Turkish.st,v 1.3 2004-03-08 23:03:48 cg Exp $'
! !
--- a/resources/de.rs Mon Mar 08 20:05:11 2004 +0100
+++ b/resources/de.rs Tue Mar 09 00:05:08 2004 +0100
@@ -1,12 +1,18 @@
#encoding iso8859-1
-; $Header: /cvs/stx/stx/libbasic/resources/de.rs,v 1.1 2004-03-08 14:18:29 cg Exp $
+; $Header: /cvs/stx/stx/libbasic/resources/de.rs,v 1.2 2004-03-08 23:04:35 cg Exp $
;
; German strings
;
; this file contains 8bit national characters;
; DONT EDIT this file with an old vi !
+SHORTDATEFORMAT '%D.%M.%y'
+DATEFORMAT '%D.%(ShortMonthName).%y'
+LONGDATEFORMAT '%(DayName), den %D.%M.%y'
+
+TIMEFORMAT '%h:%m:%s'
+
'monday' 'Montag'
'tuesday' 'Dienstag'
'wednesday' 'Mittwoch'
--- a/resources/it.rs Mon Mar 08 20:05:11 2004 +0100
+++ b/resources/it.rs Tue Mar 09 00:05:08 2004 +0100
@@ -1,12 +1,16 @@
#encoding iso8859-1
-; $Header: /cvs/stx/stx/libbasic/resources/it.rs,v 1.1 2004-03-08 14:18:29 cg Exp $
+; $Header: /cvs/stx/stx/libbasic/resources/it.rs,v 1.2 2004-03-08 23:04:35 cg Exp $
;
; Italian strings
;
; this file contains 8bit national characters;
; DONT EDIT this file with an old vi !
+SHORTDATEFORMAT '%D/%M/%y'
+DATEFORMAT '%D/%M/%y'
+LONGDATEFORMAT '%D/%M/%y'
+
'monday' 'lunedi'
'tuesday' 'martedi'
'wednesday' 'mercoledi'
--- a/resources/sv.rs Mon Mar 08 20:05:11 2004 +0100
+++ b/resources/sv.rs Tue Mar 09 00:05:08 2004 +0100
@@ -1,12 +1,16 @@
#encoding iso8859-1
-; $Header: /cvs/stx/stx/libbasic/resources/sv.rs,v 1.1 2004-03-08 14:18:29 cg Exp $
+; $Header: /cvs/stx/stx/libbasic/resources/sv.rs,v 1.2 2004-03-08 23:04:35 cg Exp $
;
; Swedish strings
;
; this file contains 8bit national characters;
; DONT EDIT this file with an old vi !
+SHORTDATEFORMAT '%y-%M-%d'
+DATEFORMAT '%y-%M-%d'
+LONGDATEFORMAT '%y-%M-%d'
+
'monday' 'måndag'
'tuesday' 'tisdag'
'wednesday' 'onsdag'