[Unicode]   Common Locale Data Repository : Bug Tracking Home | Site Map | Search
 

Changeset 8043


Ignore:
Timestamp:
01/16/13 10:19:42 (2 years ago)
Author:
markdavis
Message:

cldrbug 5570: updated review items

Location:
trunk/tools
Files:
4 added
11 edited

Legend:

Unmodified
Added
Removed
  • trunk/tools/cldr-apps/WebContent/WEB-INF/tmpl/menu_top.jsp

    r7360 r8043  
    117117        } 
    118118        %> 
    119          
     119        <b>Sections:</b>  
    120120        <% 
    121121                        String xclass = SurveyMain.R_VETTING.equals(ctx.field(SurveyMain.QUERY_SECTION))?"selected":"notselected"; 
     
    125125        <%   }  
    126126                %> 
    127                
    128               <label class='menutop-other'><a href="<%= ctx.base() %>?_=<%= ctx.getLocale() %>&amp;<%= SurveyMain.QUERY_SECTION %>=r_datetime&calendar=gregorian" 
    129                                 class="notselected">Date/Time Review</a></label> | 
    130      
    131127<% 
    132128            String covlev = ctx.getCoverageSetting(); 
     
    149145                /* ctx.includeFragment("report_menu.jsp");  don't use JSP include, because of variables */ 
    150146%> 
    151    |&nbsp;<a <%=ctx.atarget("st:supplemental")%> class='notselected'  
     147              <br><b>Review:</b>  
     148              <label class='menutop-other'><a href="<%= ctx.base() %>?_=<%= ctx.getLocale() %>&amp;<%= SurveyMain.QUERY_SECTION %>=r_datetime&calendar=gregorian" 
     149                                class="notselected">Date/Time</a></label> 
     150              | <label class='menutop-other'><a href="<%= ctx.base() %>?_=<%= ctx.getLocale() %>&amp;<%= SurveyMain.QUERY_SECTION %>=r_zones" 
     151                                class="notselected">Zones</a></label> 
     152              | <label class='menutop-other'><a href="<%= ctx.base() %>?_=<%= ctx.getLocale() %>&amp;<%= SurveyMain.QUERY_SECTION %>=r_compact" 
     153                                class="notselected">Numbers</a></label> 
     154   | <a <%=ctx.atarget("st:supplemental")%> class='notselected'  
    152155            href='http://unicode.org/cldr/data/charts/supplemental/language_territory_information.html#<%= 
    153156            ctx.getLocale().getLanguage() %>'>Supplemental</a> 
  • trunk/tools/cldr-apps/WebContent/WEB-INF/tmpl/r_datetime.jsp

    r7368 r8043  
    77String type = ctx.field("calendar", "gregorian"); 
    88%> 
    9 <h3>Date/Time Review : <%=         com.ibm.icu.lang.UCharacter.toTitleCase(SurveyMain.BASELINE_LOCALE.toLocale(), type, null)  %></h3> 
     9<h3>Review Date/Times : <%=         com.ibm.icu.lang.UCharacter.toTitleCase(SurveyMain.BASELINE_LOCALE.toLocale(), type, null)  %></h3> 
     10<p>See <a href='http://cldr.unicode.org/translation/date-time-review'>instructions</a> before continuing.</p> 
    1011<% 
    1112// OLD CLDRFile englishFile = ctx.sm.getSTFactory().getOldFile(CLDRLocale.getInstance("en")); 
  • trunk/tools/java/org/unicode/cldr/draft/IdentifierInfo.java

    r7859 r8043  
    1313 
    1414/** 
    15  * This class analyzes a possible identifier for script and identifier status. Use it by calling setIdentifierProfile 
    16  * then setIdentifier. 
     15 * This class analyzes a possible identifier for script and identifier status.  
     16 * Use it by calling setIdentifierProfile then setIdentifier. 
    1717 * At this point: 
    1818 * <ol> 
     
    2929 *  
    3030 * @author markdavis 
    31  *  
     31 * @internal 
    3232 */ 
    3333public class IdentifierInfo { 
  • trunk/tools/java/org/unicode/cldr/tool/SearchXml.java

    r7859 r8043  
    33import java.io.File; 
    44import java.io.IOException; 
     5import java.io.PrintStream; 
     6import java.io.PrintWriter; 
     7import java.io.StringWriter; 
    58import java.util.LinkedHashMap; 
    69import java.util.LinkedHashSet; 
     
    2427 
    2528public class SearchXml { 
     29 
    2630    // TODO Use options 
    2731    private static Matcher fileMatcher; 
     
    3337 
    3438    private static boolean showFiles; 
    35     private static boolean showValues = false; 
     39    private static boolean showValues = true; 
    3640    private static boolean replaceValues; 
    3741 
     
    5963 
    6064    final static Options myOptions = new Options() 
    61         .add("source", ".*", CldrUtility.MAIN_DIRECTORY, "source directory") 
    62         .add("file", ".*", null, "regex to filter files. ! in front selects items that don't match.") 
    63         .add("path", ".*", null, 
    64             "regex to filter paths. ! in front selects items that don't match. example: -p relative.*@type=\\\"-?3\\\"") 
     65    .add("source", ".*", CldrUtility.MAIN_DIRECTORY, "source directory") 
     66    .add("file", ".*", null, "regex to filter files. ! in front selects items that don't match.") 
     67    .add("path", ".*", null, 
     68        "regex to filter paths. ! in front selects items that don't match. example: -p relative.*@type=\\\"-?3\\\"") 
    6569        .add("value", ".*", null, "regex to filter values. ! in front selects items that don't match") 
    6670        .add("level", ".*", null, "regex to filter levels. ! in front selects items that don't match") 
     
    7175        .add("groups", null, null, 
    7276            "only retain capturing groups in path/value, eg in -p @modifiers=\\\"([^\\\"]*+)\\\", output the part in (...)") 
    73         .add("Verbose", null, null, "verbose output") 
    74         .add("recursive", null, null, "recurse directories") 
    75         .add("Star", null, null, "get statistics on starred paths"); 
     77            .add("Verbose", null, null, "verbose output") 
     78            .add("recursive", null, null, "recurse directories") 
     79            .add("Star", null, null, "get statistics on starred paths") 
     80            ; 
    7681 
    7782    public static void main(String[] args) throws IOException { 
     
    185190                "\tFile" + 
    186191                "\tBase" + 
    187                 "\tSame" + 
    188                 "\tDeletions" + 
    189                 "\tAdditions" + 
    190                 "\tChanges" 
     192                DiffInfo.DiffInfoHeader + 
     193                "\n#\tValue\tOtherValue\tPath" 
    191194                ); 
    192195        } 
     
    232235            System.out.flush(); 
    233236        } 
     237        System.out.println("\t" + DiffInfo.DiffInfoHeader); 
     238        DIFF_INFO.showValues("TOTAL"); 
     239         
    234240        for (String error : ERRORS) { 
    235241            System.err.println(error); 
     
    245251                | XMLFileReader.ERROR_HANDLER, false); 
    246252        } catch (Exception e) { 
    247             ERRORS.add("Can't read " + directory + "/" + fileName); 
     253            StringWriter stringWriter = new StringWriter(); 
     254            PrintWriter arg0 = new PrintWriter(stringWriter); 
     255            e.printStackTrace(arg0); 
     256            arg0.flush(); 
     257            ERRORS.add("Can't read " + directory + "/" + fileName + "\n" + stringWriter); 
    248258        } 
    249259        return listHandler.data; 
     
    261271    // static MyHandler myHandler = new MyHandler(); 
    262272 
     273    static DiffInfo DIFF_INFO = new DiffInfo(); 
     274 
     275    static class DiffInfo { 
     276        static final String DiffInfoHeader =  
     277            "\tSame" + 
     278            "\tDeletions" + 
     279            "\tAdditions" + 
     280            "\tChanges"; 
     281 
     282        int additionCount = 0; 
     283        int deletionCount = 0; 
     284        int changed2Values = 0; 
     285        int sameCount = 0; 
     286         
     287        public void showValues(String title) { 
     288            System.out.println(title + 
     289                "\t" + sameCount + 
     290                "\t" + deletionCount + 
     291                "\t" + additionCount + 
     292                "\t" + (changed2Values / 2) 
     293                ); 
     294            DIFF_INFO.additionCount += additionCount; 
     295            DIFF_INFO.deletionCount += deletionCount; 
     296            DIFF_INFO.changed2Values += changed2Values; 
     297            DIFF_INFO.sameCount += sameCount; 
     298        } 
     299    } 
     300     
     301     
    263302    /** 
    264303     * @author markdavis 
     
    277316        file = canonicalFile; 
    278317 
    279         int additionCount = 0; 
    280         int deletionCount = 0; 
    281         int changed2Values = 0; 
    282         int sameCount = 0; 
     318        DiffInfo diffInfo = new DiffInfo(); 
    283319 
    284320        if (levelMatcher != null || countOnly) { 
     
    302338        } 
    303339        for (String path : keys) { 
    304  
     340            if (path.startsWith("//ldml/identity/")) { 
     341                continue; 
     342            } 
    305343            if (pathMatcher != null && pathExclude == pathMatcher.reset(path).find()) { 
    306344                continue; 
     
    327365                    boolean diff = true; 
    328366                    if (values == null) { 
    329                         additionCount += otherValues.size(); 
     367                        diffInfo.additionCount += otherValues.size(); 
    330368                    } else if (otherValues == null) { 
    331                         deletionCount += values.size(); 
     369                        diffInfo.deletionCount += values.size(); 
    332370                    } else if (!values.equals(otherValues)) { 
    333                         changed2Values += values.size() + otherValues.size(); 
     371                        diffInfo.changed2Values += values.size() + otherValues.size(); 
    334372                    } else { 
    335373                        diff = false; 
    336                         sameCount += values.size(); 
     374                        diffInfo.sameCount += values.size(); 
    337375                    } 
    338376                    if (diff && showValues) { 
    339                         System.out.println(values + "\t" + otherValues + "\t<=\t" + path); 
     377                        System.out.println("#\t" + values + "\t" + otherValues + "\t" + path); 
    340378                    } 
    341379                } 
     
    370408                        String data = groups 
    371409                            ? group(value, valueMatcher) + "\t" + group(path, pathMatcher) 
    372                             : value + "\t" + path; 
    373                         if (!unique) { 
    374                             System.out.println( 
    375                                 (recursive ? filePath + "\t" : "") 
     410                                : value + "\t" + path; 
     411                            if (!unique) { 
     412                                System.out.println( 
     413                                    (recursive ? filePath + "\t" : "") 
    376414                                    + file + "\t" + data); 
    377                         } else { 
    378                             uniqueData.add(data, 1); 
    379                         } 
     415                            } else { 
     416                                uniqueData.add(data, 1); 
     417                            } 
    380418                    } 
    381419                } 
     
    385423            ULocale locale = new ULocale(fileName.substring(0, fileName.length() - 4)); 
    386424            String localeName = locale.getDisplayName(ULocale.ENGLISH); 
    387             System.out.println(localeName + 
     425            String title = localeName + 
    388426                "\t" + fileName + 
    389                 "\t" + getType(locale) + 
    390                 "\t" + sameCount + 
    391                 "\t" + deletionCount + 
    392                 "\t" + additionCount + 
    393                 "\t" + (changed2Values / 2) 
    394                 ); 
    395         } 
    396     } 
     427                "\t" + getType(locale); 
     428            diffInfo.showValues(title); 
     429        } 
     430    } 
     431 
    397432 
    398433    static Set<String> defaultContent = SupplementalDataInfo.getInstance().getDefaultContentLocales(); 
  • trunk/tools/java/org/unicode/cldr/tool/TablePrinter.java

    r7898 r8043  
    1010import com.ibm.icu.text.Collator; 
    1111import com.ibm.icu.text.MessageFormat; 
     12import com.ibm.icu.text.UnicodeSet; 
    1213import com.ibm.icu.util.ULocale; 
    1314 
     
    346347                        patternArgs[0] = sortedFlat[i][j]; 
    347348                        System.arraycopy(sortedFlat[i], 0, patternArgs, 1, sortedFlat[i].length); 
    348                         result.append(columnsFlat[j].cellPattern.format(patternArgs)); 
     349                        result.append(format(columnsFlat[j].cellPattern.format(patternArgs))); 
    349350                    } catch (RuntimeException e) { 
    350351                        throw (RuntimeException) new IllegalArgumentException("cellPattern<" + i + ", " + j + "> = " 
     
    352353                    } 
    353354                } else { 
    354                     result.append(sortedFlat[i][j]); 
     355                    result.append(format(sortedFlat[i][j])); 
    355356                } 
    356357                result.append(columnsFlat[j].isHeader ? "</th>" : "</td>"); 
     
    360361        result.append("</table>"); 
    361362        return result.toString(); 
     363    } 
     364 
     365    static final UnicodeSet BIDI = new UnicodeSet("[[:bc=R:][:bc=AL:]]"); 
     366    static final char RLE = '\u202B'; 
     367    static final char PDF = '\u202C'; 
     368     
     369    private String format(Comparable comparable) { 
     370        if (comparable == null) { 
     371            return null; 
     372        } 
     373        String s = comparable.toString(); 
     374        return BIDI.containsNone(s) ? s : RLE + s + PDF; 
    362375    } 
    363376 
  • trunk/tools/java/org/unicode/cldr/unittest/TestIdentifierInfo.java

    r7859 r8043  
    1919    public void TestMain() { 
    2020        String[][] testCases = { 
    21             // Format is testString, expected scripts, expected numerics (if any) 
     21            // Format is testString, expected scripts, expected alternates, expected numerics (if any) 
    2222            { "ab c", "ASCII", "Latn Common" }, 
    2323            { "a12", "ASCII", "Common Latn", "", "[0]" }, 
  • trunk/tools/java/org/unicode/cldr/util/DateTimeFormats.java

    r7911 r8043  
    425425 
    426426    public SimpleDateFormat getDateFormat(String skeleton) { 
    427         String pattern = generator.getBestPattern(skeleton); 
     427        String pattern = getBestPattern(skeleton); 
    428428        SimpleDateFormat format = icuServiceBuilder.getDateFormat(calendarID, pattern); 
    429429        format.setTimeZone(GMT); 
    430430        return format; 
     431    } 
     432 
     433    public String getBestPattern(String skeleton) { 
     434        String pattern = generator.getBestPattern(skeleton); 
     435        return pattern; 
    431436    } 
    432437 
  • trunk/tools/java/org/unicode/cldr/util/VerifyCompactNumbers.java

    r7967 r8043  
    33import java.io.IOException; 
    44import java.io.PrintWriter; 
     5import java.io.Writer; 
    56import java.util.Arrays; 
    67import java.util.HashSet; 
     
    2829public class VerifyCompactNumbers { 
    2930 
     31    static final SupplementalDataInfo sdi = SupplementalDataInfo.getInstance(); 
     32 
     33 
    3034    final static Options myOptions = new Options(); 
    3135 
     
    6367        CLDRFile englishCldrFile = factory2.make("en", true); 
    6468 
    65         SupplementalDataInfo sdi = SupplementalDataInfo.getInstance(); 
    6669        Set<String> defaultContentLocales = sdi.getDefaultContentLocales(); 
    6770        NumberFormat enf = NumberFormat.getIntegerInstance(ULocale.ENGLISH); 
    6871        enf.setGroupingUsed(false); 
    69         Set<String> debugCreationErrors = new LinkedHashSet<String>(); 
    70         Set<String> errors = new LinkedHashSet<String>(); 
    71  
    72         TablePrinter tablePrinter = new TablePrinter() // .setCaption("Timezone Formats") 
    73             .addColumn("Numeric Format").setHeaderCell(true) 
    74             .addColumn("Compact-Short") 
    75             .addColumn("Compact-Long"); 
    76         if (showCurrency) { 
    77             tablePrinter 
    78                 .addColumn("Compact-Short<br>+Currency") 
    79                 .addColumn("Compact-Long<br>+Currency") 
    80                 // .addColumn("Compact-Long<br>+Currency-Long") 
    81                 .addColumn("Numeric Format").setHeaderCell(true); 
    82         } 
    83         ; 
     72 
    8473 
    8574        Set<String> availableLanguages = new TreeSet<String>(factory2.getAvailableLanguages()); 
     
    10493            } 
    10594 
    106             tablePrinter.clearRows(); 
    107  
    108             ULocale locale2 = new ULocale(locale); 
    109             NumberFormat nf = NumberFormat.getIntegerInstance(locale2); 
    110             nf.setMaximumFractionDigits(0); 
    111             CLDRFile cldrFile = factory2.make(locale, true, DraftStatus.contributed); 
    112             PluralInfo pluralInfo = sdi.getPlurals(locale); 
    113             String[] debugOriginals = null; 
    114             CompactDecimalFormat cdf = BuildIcuCompactDecimalFormat.build(cldrFile, debugCreationErrors, 
    115                 debugOriginals, Style.SHORT, locale2, CurrencyStyle.PLAIN, currencyCode); 
    116             captureErrors(debugCreationErrors, errors, locale, "short"); 
    117             CompactDecimalFormat cdfs = BuildIcuCompactDecimalFormat.build(cldrFile, debugCreationErrors, 
    118                 debugOriginals, Style.LONG, locale2, CurrencyStyle.PLAIN, currencyCode); 
    119             captureErrors(debugCreationErrors, errors, locale, "long"); 
    120  
    121             CompactDecimalFormat cdfCurr = BuildIcuCompactDecimalFormat.build(cldrFile, debugCreationErrors, 
    122                 debugOriginals, Style.SHORT, locale2, CurrencyStyle.CURRENCY, currencyCode); 
    123             captureErrors(debugCreationErrors, errors, locale, "short-curr"); 
    124             CompactDecimalFormat cdfsCurr = BuildIcuCompactDecimalFormat.build(cldrFile, debugCreationErrors, 
    125                 debugOriginals, Style.LONG, locale2, CurrencyStyle.CURRENCY, currencyCode); 
    126             // CompactDecimalFormat cdfsCurrLong = BuildIcuCompactDecimalFormat.build(cldrFile, debugCreationErrors, 
    127             // debugOriginals, Style.LONG, locale2, CurrencyStyle.LONG_CURRENCY, currencyCode); 
    128             // CompactDecimalFormat cdfsCurrISO = BuildIcuCompactDecimalFormat.build(cldrFile, debugCreationErrors, 
    129             // debugOriginals, Style.LONG, locale2, CurrencyStyle.ISO_CURRENCY, "EUR"); 
    130             captureErrors(debugCreationErrors, errors, locale, "long-curr"); 
    131  
    132             // Collect samples for display 
    133             // one path for group-3, one for group-4 
    134             // TODO, fix for indic. 
    135             int factor = USES_GROUPS_OF_4.contains(locale) ? 10000 : 1000; 
    136  
    137             // we want to collect a sample of at least one sample for each plural category for each 
    138             // power of ten 
    139             Set<Double> samples = new TreeSet<Double>(); 
    140             samples.add(1.5d); 
    141             collectItems(pluralInfo, 1, 10, samples); 
    142             collectItems(pluralInfo, 10, 100, samples); 
    143             collectItems(pluralInfo, 100, 1000, samples); 
    144             int sigDigits = 3; 
    145             if (factor > 1000) { 
    146                 collectItems(pluralInfo, 1000, 10000, samples); 
    147                 sigDigits = 4; 
    148             } 
    149             cdf.setMaximumSignificantDigits(sigDigits); 
    150             cdfs.setMaximumSignificantDigits(sigDigits); 
    151             cdfCurr.setMaximumSignificantDigits(sigDigits); 
    152             cdfsCurr.setMaximumSignificantDigits(sigDigits); 
    153  
    154             // for (Entry<Count, List<Double>> entry : pluralInfo.getCountToExamplesMap().entrySet()) { 
    155             // samples.add(entry.getValue().get(0)); 
    156             // } 
    157             // 
    158             // Set<Double> samples2 = new TreeSet<Double>(); 
    159             // for (int i = 10; i < factor; i *= 10) { 
    160             // for (Double sample : samples) { 
    161             // samples2.add(sample*i); 
    162             // } 
    163             // } 
    164             // samples.addAll(samples2); 
    165  
    166             Set<Double> allSamples = new TreeSet<Double>(); 
    167             for (long i = 1; i <= 100000000000000L; i *= factor) { 
    168                 for (Double sample : samples) { 
    169                     double source = i * sample; 
    170                     allSamples.add(source); 
    171                 } 
    172             } 
    173  
    174             try { 
    175                 for (double source : allSamples) { 
    176                     if (false && source == 22000000 && locale.equals("cs")) { 
    177                         System.out.println("**"); 
    178                     } 
    179  
    180                     String formattedNumber = nf.format(source); 
    181                     String compactFormattedNumber = cdf.format(source); 
    182                     String compactLongFormattedNumber = cdfs.format(source); 
    183                     plainText.println(locale 
    184                         + "\t__" + source 
    185                         + "\t__" + compactFormattedNumber 
    186                         + "\t__" + compactLongFormattedNumber 
    187                         ); 
    188                     tablePrinter.addRow() 
    189                         .addCell(formattedNumber) 
    190                         .addCell(compactFormattedNumber) 
    191                         .addCell(compactLongFormattedNumber); 
    192                     if (showCurrency) { 
    193                         tablePrinter 
    194                             .addCell(cdfCurr.format(source)) 
    195                             .addCell(cdfsCurr.format(source)) 
    196                             // .addCell(cdfsCurrLong.format(source)) 
    197                             // .addCell(cdfsCurrLong.format(source)) 
    198                             .addCell(formattedNumber); 
    199                     } 
    200                     tablePrinter 
    201                         .finishRow(); 
    202                 } 
    203             } catch (Exception e) { 
    204                 e.printStackTrace(); 
    205             } 
    20695            PrintWriter out = BagFormatter.openUTF8Writer(CldrUtility.TMP_DIRECTORY + "verify/numbers/", 
    20796                locale + 
    208                     ".html"); 
     97                ".html"); 
    20998            String title = "Verify Number Formats: " + englishCldrFile.getName(locale); 
    21099            out.println("<html><head>\n" + 
     
    214103                "</head><body><h1>" + title + "</h1>"); 
    215104 
    216             out.println(tablePrinter.toString()); 
     105            CLDRFile cldrFile = factory2.make(locale, true, DraftStatus.contributed); 
     106 
     107            showNumbers(cldrFile, showCurrency, currencyCode, out); 
     108 
    217109            out.println("</body></html>"); 
    218110            out.close(); 
     
    220112        plainText.close(); 
    221113 
    222         for (String s : errors) { 
    223             System.out.println(s); 
     114    } 
     115 
     116    public static void showNumbers(CLDRFile cldrFile, boolean showCurrency,  
     117        String currencyCode, Appendable out) { 
     118        try { 
     119        Set<String> debugCreationErrors = new LinkedHashSet<String>(); 
     120        Set<String> errors = new LinkedHashSet<String>(); 
     121        String locale = cldrFile.getLocaleID(); 
     122         
     123        TablePrinter tablePrinter1 = new TablePrinter() // .setCaption("Timezone Formats") 
     124        .setTableAttributes("class='dtf-table'") 
     125        .addColumn("Numeric Format").setHeaderCell(true).setHeaderAttributes("class='dtf-th'").setCellAttributes("class='dtf-s'") 
     126        .addColumn("Compact-Short").setHeaderAttributes("class='dtf-th'").setCellAttributes("class='dtf-s'") 
     127        .addColumn("Compact-Long").setHeaderAttributes("class='dtf-th'").setCellAttributes("class='dtf-s'"); 
     128        if (showCurrency) { 
     129            tablePrinter1 
     130            .addColumn("Compact-Short<br>+Currency").setHeaderAttributes("class='dtf-th'").setCellAttributes("class='dtf-s'") 
     131            //.addColumn("Compact-Long<br>+Currency") 
     132            // .addColumn("Compact-Long<br>+Currency-Long") 
     133            .addColumn("Numeric Format").setHeaderCell(true).setHeaderAttributes("class='dtf-th'").setCellAttributes("class='dtf-s'"); 
     134        } 
     135        ; 
     136         
     137        ULocale locale2 = new ULocale(locale); 
     138        NumberFormat nf = NumberFormat.getInstance(locale2); 
     139        //nf.setMaximumFractionDigits(0); 
     140        PluralInfo pluralInfo = sdi.getPlurals(locale); 
     141        String[] debugOriginals = null; 
     142        CompactDecimalFormat cdf = BuildIcuCompactDecimalFormat.build(cldrFile, debugCreationErrors, 
     143            debugOriginals, Style.SHORT, locale2, CurrencyStyle.PLAIN, currencyCode); 
     144        captureErrors(debugCreationErrors, errors, locale, "short"); 
     145        CompactDecimalFormat cdfs = BuildIcuCompactDecimalFormat.build(cldrFile, debugCreationErrors, 
     146            debugOriginals, Style.LONG, locale2, CurrencyStyle.PLAIN, currencyCode); 
     147        captureErrors(debugCreationErrors, errors, locale, "long"); 
     148         
     149        CompactDecimalFormat cdfCurr = BuildIcuCompactDecimalFormat.build(cldrFile, debugCreationErrors, 
     150            debugOriginals, Style.SHORT, locale2, CurrencyStyle.CURRENCY, currencyCode); 
     151        captureErrors(debugCreationErrors, errors, locale, "short-curr"); 
     152        CompactDecimalFormat cdfsCurr = BuildIcuCompactDecimalFormat.build(cldrFile, debugCreationErrors, 
     153            debugOriginals, Style.LONG, locale2, CurrencyStyle.CURRENCY, currencyCode); 
     154        // CompactDecimalFormat cdfsCurrLong = BuildIcuCompactDecimalFormat.build(cldrFile, debugCreationErrors, 
     155        // debugOriginals, Style.LONG, locale2, CurrencyStyle.LONG_CURRENCY, currencyCode); 
     156        // CompactDecimalFormat cdfsCurrISO = BuildIcuCompactDecimalFormat.build(cldrFile, debugCreationErrors, 
     157        // debugOriginals, Style.LONG, locale2, CurrencyStyle.ISO_CURRENCY, "EUR"); 
     158        captureErrors(debugCreationErrors, errors, locale, "long-curr"); 
     159         
     160        // Collect samples for display 
     161        // one path for group-3, one for group-4 
     162        // TODO, fix for indic. 
     163        int factor = USES_GROUPS_OF_4.contains(locale) ? 10000 : 1000; 
     164         
     165        // we want to collect a sample of at least one sample for each plural category for each 
     166        // power of ten 
     167        Set<Double> samples = new TreeSet<Double>(); 
     168        samples.add(1.5d); 
     169        collectItems(pluralInfo, 1, 10, samples); 
     170        collectItems(pluralInfo, 10, 100, samples); 
     171        collectItems(pluralInfo, 100, 1000, samples); 
     172        int sigDigits = 3; 
     173        if (factor > 1000) { 
     174            collectItems(pluralInfo, 1000, 10000, samples); 
     175            sigDigits = 4; 
     176        } 
     177        cdf.setMaximumSignificantDigits(sigDigits); 
     178        cdfs.setMaximumSignificantDigits(sigDigits); 
     179        cdfCurr.setMaximumSignificantDigits(sigDigits); 
     180        cdfsCurr.setMaximumSignificantDigits(sigDigits); 
     181         
     182        // for (Entry<Count, List<Double>> entry : pluralInfo.getCountToExamplesMap().entrySet()) { 
     183        // samples.add(entry.getValue().get(0)); 
     184        // } 
     185        // 
     186        // Set<Double> samples2 = new TreeSet<Double>(); 
     187        // for (int i = 10; i < factor; i *= 10) { 
     188        // for (Double sample : samples) { 
     189        // samples2.add(sample*i); 
     190        // } 
     191        // } 
     192        // samples.addAll(samples2); 
     193         
     194        Set<Double> allSamples = new TreeSet<Double>(); 
     195        for (long i = 1; i <= 100000000000000L; i *= factor) { 
     196            for (Double sample : samples) { 
     197                double source = i * sample; 
     198                allSamples.add(source); 
     199            } 
     200        } 
     201         
     202        try { 
     203            for (double source : allSamples) { 
     204                if (false && source == 22000000 && locale.equals("cs")) { 
     205                    System.out.println("**"); 
     206                } 
     207         
     208                String formattedNumber = nf.format(source); 
     209                String compactFormattedNumber = cdf.format(source); 
     210                String compactLongFormattedNumber = cdfs.format(source); 
     211                //                plainText.println(locale 
     212                //                    + "\t__" + source 
     213                //                    + "\t__" + compactFormattedNumber 
     214                //                    + "\t__" + compactLongFormattedNumber 
     215                //                    ); 
     216                tablePrinter1.addRow() 
     217                .addCell(formattedNumber) 
     218                .addCell(compactFormattedNumber) 
     219                .addCell(compactLongFormattedNumber); 
     220                if (showCurrency) { 
     221                    tablePrinter1 
     222                    .addCell(cdfCurr.format(source)) 
     223                    //.addCell(cdfsCurr.format(source)) 
     224                    // .addCell(cdfsCurrLong.format(source)) 
     225                    // .addCell(cdfsCurrLong.format(source)) 
     226                    .addCell(formattedNumber); 
     227                } 
     228                tablePrinter1 
     229                .finishRow(); 
     230            } 
     231        } catch (Exception e) { 
     232            e.printStackTrace(); 
     233        } 
     234        out.append(tablePrinter1.toString() + "\n"); 
     235        showErrors(errors, out); 
     236        showErrors(debugCreationErrors, out); 
     237        } catch (IOException e) { 
     238            throw new IllegalArgumentException(e); 
     239        } 
     240    } 
     241 
     242    private static void showErrors(Set<String> errors, Appendable out) throws IOException { 
     243        if (errors.size() != 0) { 
     244            out.append("<h2>" + "Errors" + "</h2>\n"); 
     245            for (String s : errors) { 
     246                out.append("<p>" + s + "</p>\n"); 
     247            } 
     248            errors.clear(); 
    224249        } 
    225250    } 
  • trunk/tools/java/org/unicode/cldr/util/VerifyZones.java

    r7859 r8043  
    2828 
    2929public class VerifyZones { 
     30     
    3031 
    3132    final static Options myOptions = new Options(); 
     
    114115    private final static List<Format> FORMAT_LIST = Arrays.asList(Format.VVVV, Format.vvvv, Format.v, Format.zzzz, 
    115116        Format.z, Format.zzzz, Format.z); 
     117    static { 
     118        Set<String> metazones = sdi.getAllMetazones(); 
     119 
     120        for (String metazone : metazones) { 
     121            String container = PathHeader.getMetazonePageTerritory(metazone); 
     122            Map<String, String> regionToZone = metazoneToRegionToZone.get(metazone); 
     123            String tz_string = regionToZone.get("001"); 
     124            TimeZone currentZone = TimeZone.getTimeZone(tz_string); 
     125            int order = Containment.getOrder(container); 
     126            MetazoneRow row = new MetazoneRow(order, currentZone.getRawOffset(), container, metazone); 
     127            rows.add(row); 
     128        } 
     129    } 
    116130 
    117131    /** 
     
    124138        myOptions.parse(MyOptions.organization, args, true); 
    125139 
    126         String organization = MyOptions.organization.option.getValue(); 
     140        //String organization = MyOptions.organization.option.getValue(); 
    127141        String filter = MyOptions.filter.option.getValue(); 
    128142        String timezoneFilterString = MyOptions.timezoneFilter.option.getValue(); 
     
    132146        Factory factory2 = Factory.make(CldrUtility.MAIN_DIRECTORY, filter); 
    133147        CLDRFile englishCldrFile = factory2.make("en", true); 
    134         ZoneFormats englishZoneFormats = new ZoneFormats().set(englishCldrFile); 
    135  
    136         Set<String> metazones = sdi.getAllMetazones(); 
    137  
    138         for (String metazone : metazones) { 
    139             String container = PathHeader.getMetazonePageTerritory(metazone); 
    140             Map<String, String> regionToZone = metazoneToRegionToZone.get(metazone); 
    141             String tz_string = regionToZone.get("001"); 
    142             TimeZone currentZone = TimeZone.getTimeZone(tz_string); 
    143             int order = Containment.getOrder(container); 
    144             MetazoneRow row = new MetazoneRow(order, currentZone.getRawOffset(), container, metazone); 
    145             rows.add(row); 
    146         } 
    147  
     148 
     149 
     150 
     151        for (String localeID : factory2.getAvailableLanguages()) { 
     152            CLDRFile cldrFile = factory2.make(localeID, true); 
     153            PrintWriter out = BagFormatter.openUTF8Writer(CldrUtility.TMP_DIRECTORY + "verify/zones/", localeID + 
     154                ".html"); 
     155            String title = "Verify Time Zones: " + englishCldrFile.getName(localeID); 
     156            out.println("<html><head>\n" + 
     157                "<meta http-equiv='Content-Type' content='text/html; charset=utf-8'>\n" + 
     158                "<title>" + title + "</title>\n" + 
     159                "<link rel='stylesheet' type='text/css' href='index.css'>\n" + 
     160                "</head><body><h1>" + title + "</h1>"); 
     161 
     162             
     163            showZones(timezoneFilter, englishCldrFile, cldrFile, out); 
     164             
     165            out.println("</body></html>"); 
     166            out.close(); 
     167        } 
     168 
     169        // Look at DateTimeFormats.java 
     170 
     171        if (true) return; 
     172 
     173        // Set<String> defaultContentLocales = sdi.getDefaultContentLocales(); 
     174        // NumberFormat enf = NumberFormat.getIntegerInstance(ULocale.ENGLISH); 
     175        // enf.setGroupingUsed(false); 
     176        // Set<String> debugCreationErrors = new LinkedHashSet<String>(); 
     177        // Set<String> errors = new LinkedHashSet<String>(); 
     178        // 
     179        // for (String locale : factory2.getAvailableLanguages()) { 
     180        // if (defaultContentLocales.contains(locale)) { 
     181        // continue; 
     182        // } 
     183        // Level level = StandardCodes.make().getLocaleCoverageLevel(organization, locale); 
     184        // if (Level.MODERN.compareTo(level) > 0) { 
     185        // continue; 
     186        // } 
     187        // 
     188        // // one path for group-3, one for group-4 
     189        // int factor = USES_GROUPS_OF_4.contains(locale) ? 10000 : 1000; 
     190        // 
     191        // ULocale locale2 = new ULocale(locale); 
     192        // NumberFormat nf = NumberFormat.getIntegerInstance(locale2); 
     193        // nf.setMaximumFractionDigits(0); 
     194        // CLDRFile cldrFile = factory2.make(locale, true, DraftStatus.contributed); 
     195        // PluralInfo pluralInfo = sdi.getPlurals(locale); 
     196        // Set<Double> samples = new TreeSet<Double>(); 
     197        // for (Entry<Count, List<Double>> entry : pluralInfo.getCountToExamplesMap().entrySet()) { 
     198        // samples.add(entry.getValue().get(0)); 
     199        // } 
     200        // String[] debugOriginals = null; 
     201        // CompactDecimalFormat cdf = BuildIcuCompactDecimalFormat.build(cldrFile, debugCreationErrors, debugOriginals, 
     202        // Style.SHORT, locale2); 
     203        // captureErrors(debugCreationErrors, errors, locale, "short"); 
     204        // CompactDecimalFormat cdfs = BuildIcuCompactDecimalFormat.build(cldrFile, debugCreationErrors, debugOriginals, 
     205        // Style.LONG, locale2); 
     206        // captureErrors(debugCreationErrors, errors, locale, "long"); 
     207        // 
     208        // Set<Double> samples2 = new TreeSet<Double>(); 
     209        // for (int i = 10; i < factor; i *= 10) { 
     210        // for (Double sample : samples) { 
     211        // samples2.add(sample*i); 
     212        // } 
     213        // } 
     214        // samples.addAll(samples2); 
     215        // samples.add(1.5d); 
     216        // System.out.println("———\t" + englishCldrFile.getName(locale) + "\t———"); 
     217        // 
     218        // String column12 = (locale + "\t" + englishCldrFile.getName(locale)); 
     219        // System.out.print(column12 + 
     220        // "\tNumeric\tCompact-Short\tCompact-Long\tFixed Numeric\tFixed Compact-Short\tFixed Compact-Long\n"); 
     221        // 
     222        // try { 
     223        // // we print the __ so that it can be imported into a spreadsheet without problems. 
     224        // for (long i = factor; i <= 100000000000000L; i *= factor) { 
     225        // for (Double sample : samples) { 
     226        // double source = i * sample; 
     227        // if (false && source == 22000000 && locale.equals("cs")) { 
     228        // System.out.println("**"); 
     229        // } 
     230        // System.out.print(locale + "\t__" + enf.format(source)); 
     231        // System.out.print("\t__" + nf.format(source)); 
     232        // String formatted = cdf.format(source); 
     233        // System.out.print("\t__" + formatted); 
     234        // formatted = cdfs.format(source); 
     235        // System.out.println("\t__" + formatted); 
     236        // } 
     237        // System.out.println(); 
     238        // } 
     239        // } catch (Exception e) { 
     240        // e.printStackTrace(); 
     241        // } 
     242        // } 
     243        // for (String s : errors) { 
     244        // System.out.println(s); 
     245        // } 
     246    } 
     247 
     248    public static void showZones(Matcher timezoneFilter,  
     249        CLDRFile englishCldrFile, CLDRFile nativeCdrFile, 
     250        Appendable out) throws IOException { 
    148251        TablePrinter tablePrinter = new TablePrinter() // .setCaption("Timezone Formats") 
    149             .addColumn("Metazone").setHeaderCell(true).setSpanRows(true) 
    150             .addColumn("Region: TZID").setHeaderCell(true).setSpanRows(true) 
     252        .setTableAttributes("class='dtf-table'") 
     253        .addColumn("Metazone").setHeaderCell(true).setSpanRows(true).setHeaderAttributes("class='dtf-th'").setCellAttributes("class='dtf-s'") 
     254        .addColumn("Region: TZID").setHeaderCell(true).setSpanRows(true).setHeaderAttributes("class='dtf-th'").setCellAttributes("class='dtf-s'") 
    151255        // .addColumn("Region: City").setHeaderCell(true).setSpanRows(true) 
    152256        // .addColumn("Region/City").setSpanRows(true) 
     
    157261                + "<br>" + s.type.toString(daylight) 
    158262                + "<br>" + s.location 
    159                 + "<br>" + s.length).setSpanRows(true); 
     263                + "<br>" + s.length).setSpanRows(true).setHeaderAttributes("class='dtf-th'").setCellAttributes("class='dtf-s'"); 
    160264            if (s == Format.z) { 
    161265                daylight = true; // reset for final 2 items 
    162266            } 
    163267        } 
    164  
    165         for (String localeID : factory2.getAvailableLanguages()) { 
    166             CLDRFile cldrFile = factory2.make(localeID, true); 
    167             tablePrinter.clearRows(); 
    168             addZones(englishZoneFormats, cldrFile, timezoneFilter, tablePrinter); 
    169  
    170             PrintWriter out = BagFormatter.openUTF8Writer(CldrUtility.TMP_DIRECTORY + "verify/zones/", localeID + 
    171                 ".html"); 
    172             String title = "Verify Time Zones: " + englishCldrFile.getName(localeID); 
    173             out.println("<html><head>\n" + 
    174                 "<meta http-equiv='Content-Type' content='text/html; charset=utf-8'>\n" + 
    175                 "<title>" + title + "</title>\n" + 
    176                 "<link rel='stylesheet' type='text/css' href='index.css'>\n" + 
    177                 "</head><body><h1>" + title + "</h1>"); 
    178  
    179             out.println(tablePrinter.toString()); 
    180             out.println("</body></html>"); 
    181             out.close(); 
    182         } 
    183  
    184         // Look at DateTimeFormats.java 
    185  
    186         if (true) return; 
    187  
    188         // Set<String> defaultContentLocales = sdi.getDefaultContentLocales(); 
    189         // NumberFormat enf = NumberFormat.getIntegerInstance(ULocale.ENGLISH); 
    190         // enf.setGroupingUsed(false); 
    191         // Set<String> debugCreationErrors = new LinkedHashSet<String>(); 
    192         // Set<String> errors = new LinkedHashSet<String>(); 
    193         // 
    194         // for (String locale : factory2.getAvailableLanguages()) { 
    195         // if (defaultContentLocales.contains(locale)) { 
    196         // continue; 
    197         // } 
    198         // Level level = StandardCodes.make().getLocaleCoverageLevel(organization, locale); 
    199         // if (Level.MODERN.compareTo(level) > 0) { 
    200         // continue; 
    201         // } 
    202         // 
    203         // // one path for group-3, one for group-4 
    204         // int factor = USES_GROUPS_OF_4.contains(locale) ? 10000 : 1000; 
    205         // 
    206         // ULocale locale2 = new ULocale(locale); 
    207         // NumberFormat nf = NumberFormat.getIntegerInstance(locale2); 
    208         // nf.setMaximumFractionDigits(0); 
    209         // CLDRFile cldrFile = factory2.make(locale, true, DraftStatus.contributed); 
    210         // PluralInfo pluralInfo = sdi.getPlurals(locale); 
    211         // Set<Double> samples = new TreeSet<Double>(); 
    212         // for (Entry<Count, List<Double>> entry : pluralInfo.getCountToExamplesMap().entrySet()) { 
    213         // samples.add(entry.getValue().get(0)); 
    214         // } 
    215         // String[] debugOriginals = null; 
    216         // CompactDecimalFormat cdf = BuildIcuCompactDecimalFormat.build(cldrFile, debugCreationErrors, debugOriginals, 
    217         // Style.SHORT, locale2); 
    218         // captureErrors(debugCreationErrors, errors, locale, "short"); 
    219         // CompactDecimalFormat cdfs = BuildIcuCompactDecimalFormat.build(cldrFile, debugCreationErrors, debugOriginals, 
    220         // Style.LONG, locale2); 
    221         // captureErrors(debugCreationErrors, errors, locale, "long"); 
    222         // 
    223         // Set<Double> samples2 = new TreeSet<Double>(); 
    224         // for (int i = 10; i < factor; i *= 10) { 
    225         // for (Double sample : samples) { 
    226         // samples2.add(sample*i); 
    227         // } 
    228         // } 
    229         // samples.addAll(samples2); 
    230         // samples.add(1.5d); 
    231         // System.out.println("———\t" + englishCldrFile.getName(locale) + "\t———"); 
    232         // 
    233         // String column12 = (locale + "\t" + englishCldrFile.getName(locale)); 
    234         // System.out.print(column12 + 
    235         // "\tNumeric\tCompact-Short\tCompact-Long\tFixed Numeric\tFixed Compact-Short\tFixed Compact-Long\n"); 
    236         // 
    237         // try { 
    238         // // we print the __ so that it can be imported into a spreadsheet without problems. 
    239         // for (long i = factor; i <= 100000000000000L; i *= factor) { 
    240         // for (Double sample : samples) { 
    241         // double source = i * sample; 
    242         // if (false && source == 22000000 && locale.equals("cs")) { 
    243         // System.out.println("**"); 
    244         // } 
    245         // System.out.print(locale + "\t__" + enf.format(source)); 
    246         // System.out.print("\t__" + nf.format(source)); 
    247         // String formatted = cdf.format(source); 
    248         // System.out.print("\t__" + formatted); 
    249         // formatted = cdfs.format(source); 
    250         // System.out.println("\t__" + formatted); 
    251         // } 
    252         // System.out.println(); 
    253         // } 
    254         // } catch (Exception e) { 
    255         // e.printStackTrace(); 
    256         // } 
    257         // } 
    258         // for (String s : errors) { 
    259         // System.out.println(s); 
    260         // } 
     268        ZoneFormats englishZoneFormats = new ZoneFormats().set(englishCldrFile); 
     269        addZones(englishZoneFormats, nativeCdrFile, timezoneFilter, tablePrinter); 
     270 
     271 
     272        out.append(tablePrinter.toString() + "\n"); 
    261273    } 
    262274 
     
    309321                String nativeCity = nativeZoneFormats.getExemplarCity(tzid); 
    310322                output.addRow() 
    311                     .addCell(metazoneInfo) 
    312                     .addCell(marker + englishTerritory + ": " + tzid.replace("/", "/\u200B")) 
     323                .addCell(metazoneInfo) 
     324                .addCell(marker + englishTerritory + ": " + tzid.replace("/", "/\u200B")) 
    313325                // .addCell(englishTerritory + ": " + englishZoneFormats.getExemplarCity(tzid)) 
    314326                // .addCell(nativeTerritory + "<br><br>" + nativeCity) 
  • trunk/tools/java/org/unicode/cldr/util/XPathParts.java

    r7967 r8043  
    10181018        if (elementIndex < 0) elementIndex += size(); 
    10191019        Element element = elements.get(elementIndex); 
    1020         element.getAttributes().put(attributeName, attributeValue); 
     1020        if (attributeValue == null) { 
     1021            element.getAttributes().remove(attributeName); 
     1022        } else { 
     1023            element.getAttributes().put(attributeName, attributeValue); 
     1024        } 
    10211025    } 
    10221026} 
  • trunk/tools/java/org/unicode/cldr/util/data/Locales.txt

    r8036 r8043  
    273273Google  ;       ka      ;       modern  ;       T5      Georgian 
    274274Google  ;       hy      ;       modern  ;       T5      Armenian 
     275Google  ;       mn      ;       modern  ;       T5      Mongolian 
    275276                                                         
    276277#Google ;       az      ;       n/a     ;       n/a     Azerbaijani 
Note: See TracChangeset for help on using the changeset viewer.