Start line:  
End line:  

Snippet Preview

Snippet HTML Code

Stack Overflow Questions
  /*
   * Copyright (c) 2007 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.messages;
 
 import java.util.Map;
 
 
 public final class XhtmlMessageTextHandler implements MessageTextHandler {
 
     private final AttributesImpl attrs = new AttributesImpl();
     
     private static final AttributesImpl LINE_BREAK_ATTRS = new AttributesImpl();
 
     private static final char[] NEWLINE_SUBSTITUTE = { '\u21A9' };
 
     static {
         .addAttribute("class""lf");
         .addAttribute("title""Line break");
     }
 
     private final XhtmlSaxEmitter emitter;
 
     private static final Map<StringString[]> MAGIC_LINKS = new HashMap<StringString[]>();
     static {
       .put("Use CSS instead",
           new String[] {"http://wiki.whatwg.org/wiki/Presentational_elements_and_attributes",
             "About using CSS instead of presentational elements and attributes."});
       .put("register the names as meta extensions",
           new String[] {"http://wiki.whatwg.org/wiki/MetaExtensions",
             "About registering names as meta extensions."});
       .put("guidance on providing text alternatives for images",
           new String[] {"http://www.w3.org/wiki/HTML/Usage/TextAlternatives",
             "About providing text alternatives for images."});
     }

    

Parameters:
emitter
 
     public XhtmlMessageTextHandler(final XhtmlSaxEmitter emitter) {
         this. = emitter;
     }
 
     public void characters(char[] chint startint length)
             throws SAXException {
         String str = new String(ch);
         Map<IntegerStringlinkText = new TreeMap<IntegerString>();
         int index;
         for (Map.Entry<StringString[]> entry : .entrySet()) {
           index = str.indexOf(entry.getKey());
           if (index != -1) {
             linkText.put(index,entry.getKey());
           }
         }
         if (!linkText.isEmpty()) {
           int position = start;
           for (Map.Entry<IntegerStringentry : linkText.entrySet()) {
             int linkstart = entry.getKey();
             String text = entry.getValue();
             .characters(chpositionlinkstart - position - start);
             startLink(.get(text)[0], .get(text)[1]);
             .characters(chlinkstarttext.length());
             endLink();
             position = linkstart+text.length();
           }
           if (position < length) {
             characterz(chpositionlength - position);
           }
         } else {
           characterz(chstartlength);
         }
     }
 
     private void characterz(char[] chint startint length)
             throws SAXException {
        int end = start + length;
        for (int i = starti < endi++) {
            char c = ch[i];
            switch (c) {
                case '\n':
                case '\r':
                    if (start < i) {
                        .characters(chstarti - start);
                    }
                    start = i + 1;
                    .startElement("span");
                    .characters();
                    .endElement("span");
                    break;
            }
        }
        if (start < end) {
            .characters(chstartend - start);
        }
    }
    public void endCode() throws SAXException {
        .endElement("code");
    }
    public void endLink() throws SAXException {
        .endElement("a");        
    }
    public void startCode() throws SAXException {
        .startElement("code");
    }
    public void startLink(String hrefString titlethrows SAXException {
        assert href != null;
        .clear();
        .addAttribute("href"href);
        if (title != null) {
            .addAttribute("title"title);
        }
        .startElement("a");
    }
New to GrepCode? Check out our FAQ X