scuffed-code/tools/unicodetools/com/ibm/text/UCD/GenerateNamedSequences.java
Mark Davis 65e8ccde28 ICU-0 misc fixes
X-SVN-Rev: 17717
2005-05-27 21:43:46 +00:00

126 lines
5.5 KiB
Java

/**
*******************************************************************************
* Copyright (C) 1996-2001, International Business Machines Corporation and *
* others. All Rights Reserved. *
*******************************************************************************
*
* $Source: /xsrl/Nsvn/icu/unicodetools/com/ibm/text/UCD/GenerateNamedSequences.java,v $
* $Date: 2005/05/27 21:40:51 $
* $Revision: 1.1 $
*
*******************************************************************************
*/
package com.ibm.text.UCD;
import com.ibm.text.utility.*;
import com.ibm.icu.dev.test.util.BagFormatter;
import com.ibm.icu.text.Transliterator;
import com.ibm.icu.text.UTF16;
import com.ibm.icu.text.UnicodeSet;
import java.util.*;
import java.io.*;
public final class GenerateNamedSequences implements UCD_Types {
static final boolean DEBUG = false;
static public String showVarGlyphs(String code0, String code1, String shape, String description) {
if (DEBUG) System.out.println(code0 + ", " + code1 + ", [" + shape + "]");
String abbShape = "";
if (shape.length() != 0) {
abbShape = '-' + shape.substring(0,4);
if (description.indexOf("feminine") >= 0) abbShape += "fem";
}
return "<img alt='U+" + code0 + "+U+" + code1 + "/" + shape
+ "' src='http://www.unicode.org/cgi-bin/varglyph?24-" +code0 + "-" + code1 + abbShape + "'>";
}
/*
# Field 0: the variation sequence
# Field 1: the description of the desired appearance
# Field 2: where the appearance is only different in in particular shaping environments
# this field lists them. The possible values are: isolated, initial, medial, final.
# If more than one is present, there are spaces between them.
*/
static public void generate() throws IOException {
// read the data and compose the table
String table = "<table><tr><th width='10%'>Rep Glyph</th><th>Hex Sequence</th><th>Name</th><th>Copyable</th></tr>";
String[] splits = new String[4];
String[] codes = new String[20];
String[] shapes = new String[4];
BufferedReader in = Utility.openUnicodeFile("NamedSequences", Default.ucdVersion(), true, Utility.LATIN1);
Transliterator unicodexml = Transliterator.getInstance("hex/xml");
while (true) {
String line = Utility.readDataLine(in);
if (line == null) break;
line = line.trim();
if (line.length() == 0) continue;
int count = Utility.split(line, ';', splits);
String name = splits[0];
int codeCount = Utility.split(splits[1], ' ', codes);
StringBuffer codeBuffer = new StringBuffer();
for (int i = 0; i < codeCount; ++i) {
UTF16.append(codeBuffer, Integer.parseInt(codes[i],16));
}
String codeWithHyphens = splits[1].replaceAll("\\s", "-");
String codeAlt = "U+" + splits[1].replaceAll("\\s", " U+");
String codeString = unicodexml.transliterate(codeBuffer.toString());
// <img alt="03E2" src="http://www.unicode.org/cgi-bin/refglyph?24-03E2" style="vertical-align:middle">
//table += "<tr><td><img alt='U+" + codes[0] + "' src='http://www.unicode.org/cgi-bin/refglyph?24-" + codes[0] + "'></td>\n";
String imageName = "images/U" + codeWithHyphens + ".gif";
if (splits[1].compareTo("1780") >= 0 && splits[1].compareTo("1800") < 0) {
String codeNoSpaces2 = splits[1].replaceAll("\\s", "");
imageName = "http://www.unicode.org/reports/tr28/images/" + codeNoSpaces2 + ".gif";
}
table += "<tr>"
+ "<td class='copy'><img alt='(" + codeAlt + ")' src='" + imageName + "'><br><tt>"
+ splits[1] + "</tt></td>"
+ "<td>" + splits[1] + "</td>"
+ "</td><td>" + name + "</td>"
+ "<td class='copy'>" + codeString + "</td>"
+ "</tr>\n";
System.out.println(splits[1] + "\t" + codeString);
}
in.close();
table += "</table>";
// now write out the results
String directory = "DerivedData/";
String filename = directory + "NamedSequences" + UnicodeDataFile.getHTMLFileSuffix(true);
PrintWriter out = Utility.openPrintWriter(filename, Utility.LATIN1_UNIX);
/*
String[] batName = {""};
String mostRecent = UnicodeDataFile.generateBat(directory, filename, UnicodeDataFile.getFileSuffix(true), batName);
String version = Default.ucd().getVersion();
int lastDot = version.lastIndexOf('.');
String updateDirectory = version.substring(0,lastDot) + "-Update";
int updateV = version.charAt(version.length()-1) - '0';
if (updateV != 0) updateDirectory += (char)('1' + updateV);
if (DEBUG) System.out.println("updateDirectory: " + updateDirectory);
*/
String[] replacementList = {
"@revision@", Default.ucd().getVersion(),
//"@updateDirectory@", updateDirectory,
"@date@", Default.getDate(),
"@table@", table};
Utility.appendFile("NamedSequences-Template.html", Utility.UTF8, out, replacementList);
out.close();
//Utility.renameIdentical(mostRecent, Utility.getOutputName(filename), batName[0]);
}
}