blob: 9bb5937b1141e4298119cd4e1daa3de9a9af0cf8 [file] [log] [blame]
/**
*******************************************************************************
* 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");
}
*/
}