1 package org.unicode.cldr.tool; 2 3 import java.io.IOException; 4 import java.io.PrintWriter; 5 import java.util.Set; 6 import java.util.TreeSet; 7 8 import org.unicode.cldr.draft.FileUtilities; 9 import org.unicode.cldr.draft.ScriptMetadata; 10 import org.unicode.cldr.draft.ScriptMetadata.Info; 11 import org.unicode.cldr.util.CLDRPaths; 12 import org.unicode.cldr.util.FileCopier; 13 14 import com.google.common.base.Joiner; 15 import com.ibm.icu.impl.Row; 16 import com.ibm.icu.impl.Row.R3; 17 import com.ibm.icu.impl.Utility; 18 import com.ibm.icu.lang.UCharacter; 19 import com.ibm.icu.util.VersionInfo; 20 21 public class GenerateScriptMetadata { main(String[] args)22 public static void main(String[] args) throws IOException { 23 PrintWriter out = FileUtilities.openUTF8Writer(CLDRPaths.COMMON_DIRECTORY + "/properties", "scriptMetadata.txt"); 24 // PrintWriter out = new PrintWriter(System.out); 25 // FileUtilities.appendFile(GenerateScriptMetadata.class, "GenerateScriptMetadata.txt", out); 26 FileCopier.copy(GenerateScriptMetadata.class, "GenerateScriptMetadata.txt", out); 27 28 Set<R3<Integer, String, Info>> sorted = new TreeSet<>(); 29 for (String script : ScriptMetadata.getScripts()) { 30 Info i = ScriptMetadata.getInfo(script); 31 R3<Integer, String, Info> r = Row.of(i.rank, script, i); 32 sorted.add(r); 33 } 34 if (ScriptMetadata.errors.size() > 0) { 35 System.err.println(Joiner.on("\n\t").join(ScriptMetadata.errors)); 36 //throw new IllegalArgumentException(); 37 } 38 VersionInfo currentUnicodeVersion = UCharacter.getUnicodeVersion(); 39 for (R3<Integer, String, Info> s : sorted) { 40 String script = s.get1(); 41 Info i = s.get2(); 42 String comment = i.age.compareTo(currentUnicodeVersion) > 0 ? " # provisional data for future Unicode " + i.age.getVersionString(2, 2) + " script" 43 : ""; 44 out.println(script 45 + "; " + i.rank 46 + "; " + Utility.hex(i.sampleChar) 47 + "; " + i.originCountry 48 + "; " + i.density 49 // + "; " + i.likelyLanguage 50 + "; " + i.idUsage 51 + "; " + i.rtl 52 + "; " + i.lbLetters 53 + "; " + i.shapingReq 54 + "; " + i.ime 55 + "; " + i.hasCase 56 + comment); 57 // RTL? LB letters? Shaping Req? IME? Has Case? 58 } 59 out.println(); 60 out.println("# EOF"); 61 out.close(); 62 } 63 } 64