Coverage Report - org.crosswire.common.xml.HTMLSerializingContentHandler
 
Classes in this File Line Coverage Branch Coverage Complexity
HTMLSerializingContentHandler
0%
0/42
N/A
1
 
 1  
 /**
 2  
  * Distribution License:
 3  
  * JSword is free software; you can redistribute it and/or modify it under
 4  
  * the terms of the GNU Lesser General Public License, version 2.1 or later
 5  
  * as published by the Free Software Foundation. This program is distributed
 6  
  * in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even
 7  
  * the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
 8  
  * See the GNU Lesser General Public License for more details.
 9  
  *
 10  
  * The License is available on the internet at:
 11  
  *      http://www.gnu.org/copyleft/lgpl.html
 12  
  * or by writing to:
 13  
  *      Free Software Foundation, Inc.
 14  
  *      59 Temple Place - Suite 330
 15  
  *      Boston, MA 02111-1307, USA
 16  
  *
 17  
  * © CrossWire Bible Society, 2005 - 2016
 18  
  *
 19  
  */
 20  
 package org.crosswire.common.xml;
 21  
 
 22  
 import java.io.Writer;
 23  
 
 24  
 /**
 25  
  * This class provides for the formatted and syntax highlighted serialization of
 26  
  * a SAX stream to a <code>Writer</code>.
 27  
  * 
 28  
  * @see gnu.lgpl.License The GNU Lesser General Public License for details.
 29  
  * @author DM Smith
 30  
  */
 31  
 public class HTMLSerializingContentHandler extends PrettySerializingContentHandler {
 32  
     /**
 33  
      * A formatting serializer that does not add whitespace to the document.
 34  
      * This uses a StringWriter and the toString method will return its content.
 35  
      */
 36  
     public HTMLSerializingContentHandler() {
 37  0
         super();
 38  0
     }
 39  
 
 40  
     /**
 41  
      * A formatting serializer that adds whitespace to the document according to
 42  
      * the specified <code>FormatType</code>. This uses a StringWriter and the
 43  
      * toString method will return its content.
 44  
      * 
 45  
      * @param theFormat
 46  
      *            the formatting to use
 47  
      */
 48  
     public HTMLSerializingContentHandler(FormatType theFormat) {
 49  0
         super(theFormat);
 50  0
     }
 51  
 
 52  
     /**
 53  
      * A formatting serializer that adds whitespace to the document according to
 54  
      * the specified <code>FormatType</code>. As the document is serialized it
 55  
      * is written to the provided <code>Writer</code>.
 56  
      * 
 57  
      * @param theFormat
 58  
      *            the formatting to use
 59  
      * @param theWriter
 60  
      *            the writer to use
 61  
      */
 62  
     public HTMLSerializingContentHandler(FormatType theFormat, Writer theWriter) {
 63  0
         super(theFormat, theWriter);
 64  0
     }
 65  
 
 66  
     @Override
 67  
     protected String decorateTagName(String tagName) {
 68  0
         StringBuilder buf = new StringBuilder(50);
 69  0
         buf.append("<font class='tag'>");
 70  0
         buf.append(super.decorateTagName(tagName));
 71  0
         buf.append("</font>");
 72  0
         return buf.toString();
 73  
     }
 74  
 
 75  
     /*
 76  
      * (non-Javadoc)
 77  
      * 
 78  
      * @seeorg.crosswire.common.xml.PrettySerializingContentHandler#
 79  
      * decorateAttributeName(java.lang.String)
 80  
      */
 81  
     @Override
 82  
     protected String decorateAttributeName(String attrName) {
 83  0
         StringBuilder buf = new StringBuilder(50);
 84  0
         buf.append("<font class='attr'>");
 85  0
         buf.append(super.decorateAttributeName(attrName));
 86  0
         buf.append("</font>");
 87  0
         return buf.toString();
 88  
     }
 89  
 
 90  
     /*
 91  
      * (non-Javadoc)
 92  
      * 
 93  
      * @seeorg.crosswire.common.xml.PrettySerializingContentHandler#
 94  
      * decorateAttributeValue(java.lang.String)
 95  
      */
 96  
     @Override
 97  
     protected String decorateAttributeValue(String attrValue) {
 98  0
         StringBuilder buf = new StringBuilder(50);
 99  0
         buf.append("<font class='value'>");
 100  0
         buf.append(super.decorateAttributeValue(attrValue));
 101  0
         buf.append("</font>");
 102  0
         return buf.toString();
 103  
     }
 104  
 
 105  
     /*
 106  
      * (non-Javadoc)
 107  
      * 
 108  
      * @see
 109  
      * org.crosswire.common.xml.PrettySerializingContentHandler#decorateCharacters
 110  
      * (java.lang.String)
 111  
      */
 112  
     @Override
 113  
     protected String decorateCharacters(String characters) {
 114  0
         StringBuilder buf = new StringBuilder(50);
 115  0
         buf.append("<font class='text'>");
 116  0
         buf.append(XMLUtil.escape(super.decorateCharacters(characters)).replaceAll("\n", "<br>"));
 117  0
         buf.append("</font>");
 118  0
         return buf.toString();
 119  
     }
 120  
 
 121  
     /*
 122  
      * (non-Javadoc)
 123  
      * 
 124  
      * @see
 125  
      * org.crosswire.common.xml.PrettySerializingContentHandler#decorateIndent
 126  
      * (int)
 127  
      */
 128  
     @Override
 129  
     protected String decorateIndent(int indentLevel) {
 130  0
         StringBuilder buf = new StringBuilder(100);
 131  0
         buf.append("<font class='indent'>");
 132  0
         buf.append(super.decorateIndent(indentLevel).replaceAll("\t", "&nbsp;&nbsp;&nbsp;&nbsp;"));
 133  0
         buf.append("</font>");
 134  0
         return buf.toString();
 135  
     }
 136  
 
 137  
     /*
 138  
      * (non-Javadoc)
 139  
      * 
 140  
      * @see org.xml.sax.ContentHandler#startDocument()
 141  
      */
 142  
     @Override
 143  
     public void startDocument() {
 144  
         // Note: we should be using SPAN here but Sun's Java does not support
 145  
         // styling it.
 146  
         // Also, it introduces whitespace between the span and the text.
 147  0
         write("<html><head><style type='text/css'>\nFONT.tag    { font-family:courier new, monospaced; color:#666699; font-weight:bold; }\nFONT.attr   { font-family:courier new, monospaced; color:#669966; font-weight:bold; }\nFONT.value  { font-family:courier new, monospaced; color:#669966; font-style:italic; }\nFONT.indent { }\nFONT.text   { font-family:courier new, monospaced; background:#FFFF99; }\n</style></head><body>\n");
 148  0
     }
 149  
 
 150  
     /*
 151  
      * (non-Javadoc)
 152  
      * 
 153  
      * @see org.xml.sax.ContentHandler#endDocument()
 154  
      */
 155  
     @Override
 156  
     public void endDocument() {
 157  0
         write("</body></head>");
 158  0
     }
 159  
 
 160  
     /*
 161  
      * (non-Javadoc)
 162  
      * 
 163  
      * @see
 164  
      * org.crosswire.common.xml.PrettySerializingContentHandler#getEmptyTagEnd()
 165  
      */
 166  
     @Override
 167  
     protected String getEmptyTagEnd() {
 168  0
         return XMLUtil.escape(super.getEmptyTagEnd());
 169  
     }
 170  
 
 171  
     /*
 172  
      * (non-Javadoc)
 173  
      * 
 174  
      * @see
 175  
      * org.crosswire.common.xml.PrettySerializingContentHandler#getEndTagStart()
 176  
      */
 177  
     @Override
 178  
     protected String getEndTagStart() {
 179  0
         return XMLUtil.escape(super.getEndTagStart());
 180  
     }
 181  
 
 182  
     /*
 183  
      * (non-Javadoc)
 184  
      * 
 185  
      * @see org.crosswire.common.xml.PrettySerializingContentHandler#getPIEnd()
 186  
      */
 187  
     @Override
 188  
     protected String getPIEnd() {
 189  0
         return XMLUtil.escape(super.getPIEnd());
 190  
     }
 191  
 
 192  
     /*
 193  
      * (non-Javadoc)
 194  
      * 
 195  
      * @see
 196  
      * org.crosswire.common.xml.PrettySerializingContentHandler#getPIStart()
 197  
      */
 198  
     @Override
 199  
     protected String getPIStart() {
 200  0
         return XMLUtil.escape(super.getPIStart());
 201  
     }
 202  
 
 203  
     /*
 204  
      * (non-Javadoc)
 205  
      * 
 206  
      * @see org.crosswire.common.xml.PrettySerializingContentHandler#getTagEnd()
 207  
      */
 208  
     @Override
 209  
     protected String getTagEnd() {
 210  0
         return XMLUtil.escape(super.getTagEnd());
 211  
     }
 212  
 
 213  
     /*
 214  
      * (non-Javadoc)
 215  
      * 
 216  
      * @see
 217  
      * org.crosswire.common.xml.PrettySerializingContentHandler#getTagStart()
 218  
      */
 219  
     @Override
 220  
     protected String getTagStart() {
 221  0
         return XMLUtil.escape(super.getTagStart());
 222  
     }
 223  
 
 224  
     /*
 225  
      * (non-Javadoc)
 226  
      * 
 227  
      * @see
 228  
      * org.crosswire.common.xml.PrettySerializingContentHandler#getNewline()
 229  
      */
 230  
     @Override
 231  
     protected String getNewline() {
 232  0
         return "<br>";
 233  
     }
 234  
 }