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