xref: /aosp_15_r20/external/cldr/tools/cldr-code/src/main/java/org/unicode/cldr/util/ScriptToExemplars.java (revision 912701f9769bb47905792267661f0baf2b85bed5)
1 package org.unicode.cldr.util;
2 
3 import com.google.common.base.Splitter;
4 import com.google.common.collect.ImmutableMap;
5 import com.google.common.collect.Maps;
6 import com.ibm.icu.text.UnicodeSet;
7 import java.io.BufferedReader;
8 import java.io.IOException;
9 import java.util.Iterator;
10 import java.util.Map;
11 
12 public class ScriptToExemplars {
getExemplars(String script)13     public static UnicodeSet getExemplars(String script) {
14         return ScriptToExemplarsLoader.SINGLETON.getExemplars(script);
15     }
16 
17     private static class ScriptToExemplarsLoader {
18         private static final ScriptToExemplarsLoader SINGLETON = new ScriptToExemplarsLoader();
19         private Map<String, UnicodeSet> data;
20 
getExemplars(String script)21         private UnicodeSet getExemplars(String script) {
22             UnicodeSet result = data.get(script);
23             return result == null ? UnicodeSet.EMPTY : result;
24         }
25 
26         {
27             Map<String, UnicodeSet> _data = Maps.newTreeMap();
try(BufferedReader reader = FileReaders.openFile( ScriptToExemplars.class, "data/locales/scriptToExemplars.txt"))28             try (BufferedReader reader =
29                     FileReaders.openFile(
30                             ScriptToExemplars.class, "data/locales/scriptToExemplars.txt")) {
31                 Iterable<String> rlsi =
32                         With.toIterable(new FileReaders.ReadLineSimpleIterator(reader));
33                 for (String line : rlsi) {
34                     if (line.isBlank() || line.startsWith("#")) {
35                         continue;
36                     }
37                     Iterator<String> parts = Splitter.on(';').trimResults().split(line).iterator();
38                     String script = parts.next();
39                     int size = Integer.parseInt(parts.next());
40                     UnicodeSet uset = new UnicodeSet(parts.next()).freeze();
41                     _data.put(script, uset);
42                 }
43             } catch (IOException e) {
44                 throw new RuntimeException(e);
45             }
46             data = ImmutableMap.copyOf(_data);
47         }
48     }
49 }
50