Start line:  
End line:  

Snippet Preview

Snippet HTML Code

Stack Overflow Questions
  /*
   * Copyright (c) 2012 Vadim Zaslawski, Ontos AG
   * Copyright (c) 2012 Mozilla Foundation
   *
   * Permission is hereby granted, free of charge, to any person obtaining a
   * copy of this software and associated documentation files (the "Software"),
   * to deal in the Software without restriction, including without limitation
   * the rights to use, copy, modify, merge, publish, distribute, sublicense,
   * and/or sell copies of the Software, and to permit persons to whom the
  * Software is furnished to do so, subject to the following conditions:
  *
  * The above copyright notice and this permission notice shall be included in
  * all copies or substantial portions of the Software.
  *
  * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
  * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
  * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
  * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
  * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
  * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
  * DEALINGS IN THE SOFTWARE.
  */
 
 package nu.validator.servlet;
 
 
 
 
 public class XhtmlOutlineEmitter {
 
     private static final char[] OUTLINE = "Outline".toCharArray();
 
     private final Deque<Sectionoutline;
 
     private final XhtmlSaxEmitter emitter;
 
     private final AttributesImpl attrs = new AttributesImpl();
 
     public XhtmlOutlineEmitter(final ContentHandler contentHandler,
             final Deque<Sectionoutline) {
         this. = new XhtmlSaxEmitter(contentHandler);
         this. = outline;
     }
 
     public void emit() throws SAXException {
         if ( != null) {
             .clear();
             .addAttribute("id""outline");
             .startElement("section");
             .startElement("h2");
             .characters();
             .endElement("h2");
             try {
                 emitOutline(, 0);
             } catch (IOException e) {
                 throw new RuntimeException(e);
             }
             .endElement("section");
         }
     }
 
     protected void emitOutline(Deque<Sectionoutlineint currentDepth)
             throws IOExceptionSAXException {
         .startElement("ol");
         for (Section section : outline) {
             .startElement("li");
             StringBuilder headingText = section.getHeadingTextBuilder();
             if (headingText.length() > 0) {
                 .startElementWithClass("span""heading");
                 .characters(headingText.toString().toCharArray());
                 .endElement("span");
             } else if (section.hasEmptyHeading()) {
                 .characters(("[" + section.getElementName() + " element with empty heading]").toCharArray());
             } else if ("h1".equals(section.getElementName())
                     || "h2".equals(section.getElementName())
                     || "h3".equals(section.getElementName())
                     || "h4".equals(section.getElementName())
                     || "h5".equals(section.getElementName())
                     || "h6".equals(section.getElementName())) {
                 .characters(("[section implied by empty "
                         + section.getElementName() + " element]").toCharArray());
             } else {
                 .characters(("[" + section.getElementName() + " element with no heading]").toCharArray());
             }
             Deque<Sectionsections = section.sections;
             if (!sections.isEmpty()) {
                 emitOutline(sectionscurrentDepth + 1);
             }
             .endElement("li");
         }
         .endElement("ol");
     }
New to GrepCode? Check out our FAQ X