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