Nicolas Cellier uploaded a new version of Multilingual to project The Trunk:
http://source.squeak.org/trunk/Multilingual-nice.120.mcz ==================== Summary ==================== Name: Multilingual-nice.120 Author: nice Time: 11 June 2010, 10:22:16.414 pm UUID: 72090c02-6d02-2948-b919-965751b913dd Ancestors: Multilingual-ar.119 Use nextLine to handle any case of in image LF leakage =============== Diff against Multilingual-ar.119 =============== Item was changed: ----- Method: Unicode class>>parseUnicodeDataFrom: (in category 'class methods') ----- parseUnicodeDataFrom: stream " self halt. self parseUnicodeDataFile " | line fieldEnd point fieldStart toNumber generalCategory decimalProperty | toNumber := [:quad | ('16r', quad) asNumber]. GeneralCategory := SparseLargeTable new: 16rE0080 chunkSize: 1024 arrayClass: Array base: 1 defaultValue: 'Cn'. DecimalProperty := SparseLargeTable new: 16rE0080 chunkSize: 32 arrayClass: Array base: 1 defaultValue: -1. 16r3400 to: 16r4DB5 do: [:i | GeneralCategory at: i+1 put: 'Lo']. 16r4E00 to: 16r9FA5 do: [:i | GeneralCategory at: i+1 put: 'Lo']. 16rAC00 to: 16rD7FF do: [:i | GeneralCategory at: i+1 put: 'Lo']. + [(line := stream nextLine) size > 0] whileTrue: [ - [(line := stream upTo: Character cr) size > 0] whileTrue: [ fieldEnd := line indexOf: $; startingAt: 1. point := toNumber value: (line copyFrom: 1 to: fieldEnd - 1). point > 16rE007F ifTrue: [ GeneralCategory zapDefaultOnlyEntries. DecimalProperty zapDefaultOnlyEntries. ^ self]. 2 to: 3 do: [:i | fieldStart := fieldEnd + 1. fieldEnd := line indexOf: $; startingAt: fieldStart. ]. generalCategory := line copyFrom: fieldStart to: fieldEnd - 1. GeneralCategory at: point+1 put: generalCategory. generalCategory = 'Nd' ifTrue: [ 4 to: 7 do: [:i | fieldStart := fieldEnd + 1. fieldEnd := line indexOf: $; startingAt: fieldStart. ]. decimalProperty := line copyFrom: fieldStart to: fieldEnd - 1. DecimalProperty at: point+1 put: decimalProperty asNumber. ]. ]. GeneralCategory zapDefaultOnlyEntries. DecimalProperty zapDefaultOnlyEntries. ! Item was changed: ----- Method: CombinedChar class>>parseCompositionMappingFrom: (in category 'as yet unclassified') ----- parseCompositionMappingFrom: stream " self halt. self parseCompositionMapping " | line fieldEnd point fieldStart compositions toNumber diacritical result | toNumber := [:quad | ('16r', quad) asNumber]. Compositions := IdentityDictionary new: 2048. Decompositions := IdentityDictionary new: 2048. Diacriticals := IdentitySet new: 2048. + [(line := stream nextLine) size > 0] whileTrue: [ - [(line := stream upTo: Character cr) size > 0] whileTrue: [ fieldEnd := line indexOf: $; startingAt: 1. point := ('16r', (line copyFrom: 1 to: fieldEnd - 1)) asNumber. 2 to: 6 do: [:i | fieldStart := fieldEnd + 1. fieldEnd := line indexOf: $; startingAt: fieldStart. ]. compositions := line copyFrom: fieldStart to: fieldEnd - 1. (compositions size > 0 and: [compositions first ~= $<]) ifTrue: [ compositions := compositions substrings collect: toNumber. compositions size > 1 ifTrue: [ diacritical := compositions first. Diacriticals add: diacritical. result := compositions second. (Decompositions includesKey: point) ifTrue: [ self error: 'should not happen'. ] ifFalse: [ Decompositions at: point put: (Array with: diacritical with: result). ]. (Compositions includesKey: diacritical) ifTrue: [ (Compositions at: diacritical) at: result put: point. ] ifFalse: [ Compositions at: diacritical put: (IdentityDictionary new at: result put: point; yourself). ]. ]. ]. ]. ! |
Free forum by Nabble | Edit this page |