| /** |
| ******************************************************************************* |
| * Copyright (C) 1996-2001, International Business Machines Corporation and * |
| * others. All Rights Reserved. * |
| ******************************************************************************* |
| * |
| * $Source: /xsrl/Nsvn/icu/unicodetools/com/ibm/text/UCD/WriteJavaScriptInfo.java,v $ |
| * $Date: 2002/07/30 09:56:40 $ |
| * $Revision: 1.4 $ |
| * |
| ******************************************************************************* |
| */ |
| |
| package com.ibm.text.UCD; |
| |
| import java.util.*; |
| import java.io.*; |
| //import java.text.*; |
| import com.ibm.text.utility.*; |
| |
| public class WriteJavaScriptInfo implements UCD_Types { |
| |
| static public void assigned() throws IOException { |
| PrintWriter log = Utility.openPrintWriter("assigned.js", Utility.LATIN1_UNIX); |
| UCD ucd = UCD.make(); |
| boolean wasIn = false; |
| int lastWritten = -100; |
| int i; |
| for (i = 0; i <= 0x10FFFF; ++i) { |
| byte cat = ucd.getCategory(i); |
| boolean in = cat != Cn && cat != Co && cat != Cs; |
| if (wasIn == in) continue; |
| if (in) { |
| log.print(i + ","); |
| lastWritten = i; |
| } else { |
| if (lastWritten != i-1) log.print(i-1); |
| log.println(","); |
| } |
| wasIn = in; |
| } |
| if (wasIn) { |
| if (lastWritten != i-1) log.print(i-1); |
| log.println(","); |
| } |
| log.close(); |
| } |
| |
| /* TODO: fix enumeration of compositions |
| |
| static public void writeJavascriptInfo() throws IOException { |
| System.err.println("Writing Javascript data"); |
| UCD ucd = UCD.make(); |
| Normalizer normKD = new Normalizer(Normalizer.NFKD); |
| Normalizer normD = new Normalizer(Normalizer.NFD); |
| PrintWriter log = new PrintWriter(new FileOutputStream("Normalization_data.js")); |
| |
| int count = 0; |
| int datasize = 0; |
| int max = 0; |
| int over7 = 0; |
| log.println("var KD = new Object(); // NFKD compatibility decomposition mappings"); |
| log.println("// NOTE: Hangul is done in code!"); |
| CompactShortArray csa = new CompactShortArray((short)0); |
| |
| for (char c = 0; c < 0xFFFF; ++c) { |
| if ((c & 0xFFF) == 0) System.err.println(Utility.hex(c)); |
| if (0xAC00 <= c && c <= 0xD7A3) continue; |
| if (normKD.hasDecomposition(c)) { |
| ++count; |
| String decomp = normKD.normalize(c); |
| datasize += decomp.length(); |
| if (max < decomp.length()) max = decomp.length(); |
| if (decomp.length() > 7) ++over7; |
| csa.setElementAt(c, (short)count); |
| log.println("\t KD[0x" + Utility.hex(c) + "]='\\u" + Utility.hex(decomp,"\\u") + "';"); |
| } |
| } |
| csa.compact(); |
| log.println("// " + count + " NFKD mappings total"); |
| log.println("// " + datasize + " total characters of results"); |
| log.println("// " + max + " string length, maximum"); |
| log.println("// " + over7 + " result strings with length > 7"); |
| log.println("// " + csa.storage() + " trie length (doesn't count string size)"); |
| log.println(); |
| |
| count = 0; |
| datasize = 0; |
| max = 0; |
| log.println("var D = new Object(); // NFD canonical decomposition mappings"); |
| log.println("// NOTE: Hangul is done in code!"); |
| csa = new CompactShortArray((short)0); |
| |
| for (char c = 0; c < 0xFFFF; ++c) { |
| if ((c & 0xFFF) == 0) System.err.println(Utility.hex(c)); |
| if (0xAC00 <= c && c <= 0xD7A3) continue; |
| if (normD.hasDecomposition(c)) { |
| ++count; |
| String decomp = normD.normalize(c); |
| datasize += decomp.length(); |
| if (max < decomp.length()) max = decomp.length(); |
| csa.setElementAt(c, (short)count); |
| log.println("\t D[0x" + Utility.hex(c) + "]='\\u" + Utility.hex(decomp,"\\u") + "';"); |
| } |
| } |
| csa.compact(); |
| |
| log.println("// " + count + " NFD mappings total"); |
| log.println("// " + datasize + " total characters of results"); |
| log.println("// " + max + " string length, maximum"); |
| log.println("// " + csa.storage() + " trie length (doesn't count string size)"); |
| log.println(); |
| |
| count = 0; |
| datasize = 0; |
| log.println("var CC = new Object(); // canonical class mappings"); |
| CompactByteArray cba = new CompactByteArray(); |
| |
| for (char c = 0; c < 0xFFFF; ++c) { |
| if ((c & 0xFFF) == 0) System.err.println(Utility.hex(c)); |
| int canClass = normKD.getCanonicalClass(c); |
| if (canClass != 0) { |
| ++count; |
| |
| log.println("\t CC[0x" + Utility.hex(c) + "]=" + canClass + ";"); |
| } |
| } |
| cba.compact(); |
| log.println("// " + count + " canonical class mappings total"); |
| log.println("// " + cba.storage() + " trie length"); |
| log.println(); |
| |
| count = 0; |
| datasize = 0; |
| log.println("var C = new Object(); // composition mappings"); |
| log.println("// NOTE: Hangul is done in code!"); |
| |
| IntHashtable.IntEnumeration enum = normKD.getD getComposition(); |
| while (enum.hasNext()) { |
| int key = enum.next(); |
| char val = (char) enum.value(); |
| if (0xAC00 <= val && val <= 0xD7A3) continue; |
| ++count; |
| log.println("\tC[0x" + Utility.hex(key) + "]=0x" + Utility.hex(val) + ";"); |
| } |
| log.println("// " + count + " composition mappings total"); |
| log.println(); |
| |
| log.close(); |
| System.err.println("Done writing Javascript data"); |
| } |
| |
| */ |
| |
| } |