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

Changeset 9386


Ignore:
Timestamp:
09/16/13 09:13:25 (4 years ago)
Author:
markdavis
Message:

cldrbug 5801: made a number of fixes to the tool for either correctness or ease-of-use

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/tools/java/org/unicode/cldr/tool/CheckHtmlFiles.java

    r9342 r9386  
    3131 
    3232public class CheckHtmlFiles { 
     33 
    3334    final static Options myOptions = new Options(); 
    3435    final static Writer LOG = new OutputStreamWriter(System.out); 
     
    3637    static Pattern SUPPRESS_SECTION_NUMBER = Pattern.compile("Migration|References|Acknowledgments|Modifications|Revision \\d+"); 
    3738    static Pattern SUPPRESS_REVISION = Pattern.compile("Revision \\d+"); 
     39    static Pattern SPACES = Pattern.compile("\\s+"); 
    3840 
    3941    enum MyOptions { 
    40         old( 
    41             ".*", 
    42             "/Users/markdavis/Google Drive/Backup-2012-10-09/Documents/indigo/cldr-archive/cldr-22.1/specs/ldml/tr35\\.html", 
    43             "source data (regex)"), 
     42        old(".*", "/Users/markdavis/Google Drive/Backup-2012-10-09/Documents/indigo/cldr-archive/cldr-22.1/specs/ldml/tr35\\.html", "source data (regex)"), 
    4443        target(".*", CldrUtility.BASE_DIRECTORY + "specs/ldml/tr35(-.*)?\\.html", "target data (regex)"), 
    4544        verbose(null, null, "verbose debugging messages"), 
     
    6362        verbose = MyOptions.verbose.option.doesOccur(); 
    6463 
    65         if (MyOptions.contents.option.doesOccur()) { 
     64        if (!MyOptions.target.option.doesOccur()) { // contents 
    6665            Data target = new Data().getSentences(MyOptions.contents.option.getValue()); 
    6766            return; 
     
    9695 
    9796    static Pattern WHITESPACE = Pattern.compile("[\\s]+"); 
     97    static Pattern BADSECTION = Pattern.compile("^\\s*(\\d+\\s*)?Section\\s*\\d+\\s*[-:]\\s*"); 
     98     
    9899    static final Set<String> FORCEBREAK = new HashSet<String>(); 
    99100    static { 
     
    204205        public String toString() { 
    205206            //   <h3><a name="Identity_Elements" href="#Identity_Elements">5.3 Identity Elements</a></h3> 
    206             String id = ids.iterator().next(); 
     207            String id = ids.isEmpty() ? "NOID" : ids.iterator().next(); 
    207208            String result = "<h" + level + ">" 
    208209                + "<a name=\"" + id + "\" href=\"#" + id + "\">" 
     
    232233        } 
    233234 
     235        public void addText(String toAppend) { 
     236            text += toAppend; 
     237            text = SPACES.matcher(text).replaceAll(" ").trim(); // clean up all spaces; make more efficient later 
     238        } 
     239         
    234240        public boolean isContents() { 
    235             return text.toString().endsWith("Contents"); 
     241            return text.toString().startsWith("Contents"); 
    236242        } 
    237243 
     
    243249            this.levels.set(levels); 
    244250            String error = ""; 
     251            if (badSectionMatcher.reset(text).find()) { 
     252                text = text.substring(badSectionMatcher.end()); 
     253                error += "Extra 'Section...' at start; "; 
     254            } 
    245255            if (!headerMatcher.reset(text).matches()) { 
    246256                if (!SUPPRESS_SECTION_NUMBER.matcher(text).matches()) { 
     
    249259            } else { 
    250260                text = text.substring(headerMatcher.end(1)); 
     261                if (text.startsWith(".")) { 
     262                    text = text.substring(1).trim(); 
     263                    error += "Extra . at start; "; 
     264                } 
    251265                Levels parsedLevels = Levels.parse(headerMatcher.group(1)); 
    252266                if (levels.compareTo(parsedLevels) != 0) { 
     
    272286 
    273287    static Matcher headerMatcher = WELLFORMED_HEADER.matcher(""); 
     288    static Matcher badSectionMatcher = BADSECTION.matcher(""); 
    274289 
    275290    static class HeadingInfoList extends ArrayList<HeadingInfo> { 
     
    285300            h.setLevels(lastBuildLevel.next(h.level, missingLevel), errors); 
    286301            if (missingLevel.value) { 
    287                 errors.add("Missing Level in: " + h); 
     302                errors.add("FATAL: Missing Level in: " + h); 
    288303            } 
    289304            return super.add(h); 
     
    294309        public void listContents() { 
    295310 
    296             System.out.println("*REVISED TOC*"); 
     311            System.out.println("\n*REVISED TOC*"); 
    297312            Counter<String> idCounter = new Counter<String>(); 
    298313 
     
    362377            --ulCount; 
    363378            if (liCount != 0 || ulCount != 0) { 
    364                 throw new IllegalArgumentException("Mismatched counts, " + liCount + ", " + ulCount); 
     379                throw new IllegalArgumentException("Mismatched counts in generated contents, li:" + liCount + ", ul:" + ulCount); 
    365380            } 
    366381            for (String id : idCounter) { 
    367382                long count = idCounter.get(id); 
    368383                if (count != 1) { 
    369                     errors.add("Non-Unique ID: " + id); 
    370                 } 
    371             } 
    372         } 
    373  
    374         public void showErrors() { 
     384                    errors.add("FATAL: Non-Unique ID: " + id); 
     385                } 
     386            } 
     387        } 
     388 
     389        public int showErrors() { 
     390            int fatalCount = 0; 
    375391            if (!errors.isEmpty()) { 
    376392                System.out.println("\n*ERRORS*\n"); 
    377393                for (String error : errors) { 
    378                     System.out.println(error); 
    379                 } 
    380             } 
     394                    if (error.startsWith("FATAL:")) { 
     395                        System.out.println(error); 
     396                        fatalCount++; 
     397                    } 
     398                } 
     399                if (fatalCount == 0) { 
     400                    for (String error : errors) { 
     401                        System.out.println(error); 
     402                    } 
     403                } 
     404            } 
     405            if (this.size() == 0) { 
     406                System.out.println("No header items (eg <h2>) captured."); 
     407                fatalCount = 1; 
     408            } 
     409            return fatalCount; 
    381410        } 
    382411    } 
     
    406435                ++count; 
    407436 
    408                 System.out.println("\nProcessing:\t" + fileString + "\n"); 
     437                System.out.println("\nProcessing:\t" + sourceDirectory + "/" + fileString + "\n"); 
    409438 
    410439                Reader in = new FileReader(new File(sourceDirectory, fileString)); 
     
    421450                main: while (true) { 
    422451                    Type x = parser.next(content); 
    423                     //                    LOG.write(x + ":\t"); 
    424                     //                    parser.writeResult(x, content, LOG); 
    425                     //                    LOG.write("\n"); 
    426                     //                    LOG.flush(); 
     452                    if (verbose) { 
     453                        LOG.write(x + ":\t"); 
     454                        parser.writeResult(x, content, LOG); 
     455                        LOG.write("\n"); 
     456                        LOG.flush(); 
     457                    } 
    427458                    switch (x) { 
    428459                    case ATTRIBUTE: 
     
    473504                        buffer.append(contentString.indexOf('&') >= 0 
    474505                            ? TransliteratorUtilities.fromHTML.transform(contentString) 
    475                             : contentString); 
     506                                : contentString); 
    476507                        if (inHeading) { 
    477                             heading.text += contentString; 
     508                            heading.addText(contentString); 
    478509                        } 
    479510                        break; 
     
    502533                    sentences.add(sentence); 
    503534                } 
    504                 headingInfoList.listContents(); 
    505                 headingInfoList.showErrors(); 
     535                int fatalCount = headingInfoList.showErrors(); 
     536                if (fatalCount == 0) { 
     537                    headingInfoList.listContents(); 
     538                } else { 
     539                    System.out.println("\nFix fatal errors in " + fileString + " before contents can be generated"); 
     540                } 
    506541            } 
    507542            if (count == 0) { 
Note: See TracChangeset for help on using the changeset viewer.