Clover coverage report - Code Coverage for tapestry release 4.0.1
Coverage timestamp: Fri Mar 31 2006 09:12:14 EST
file stats: LOC: 64   Methods: 1
NCLOC: 27   Classes: 1
 
 Source file Conditionals Statements Methods TOTAL
MarkupFilterUtils.java 100% 100% 100% 100%
coverage
 1    // Copyright 2005 The Apache Software Foundation
 2    //
 3    // Licensed under the Apache License, Version 2.0 (the "License");
 4    // you may not use this file except in compliance with the License.
 5    // You may obtain a copy of the License at
 6    //
 7    // http://www.apache.org/licenses/LICENSE-2.0
 8    //
 9    // Unless required by applicable law or agreed to in writing, software
 10    // distributed under the License is distributed on an "AS IS" BASIS,
 11    // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 12    // See the License for the specific language governing permissions and
 13    // limitations under the License.
 14   
 15    package org.apache.tapestry.markup;
 16   
 17    import java.io.PrintWriter;
 18   
 19    import org.apache.tapestry.util.text.ICharacterTranslator;
 20   
 21    /**
 22    * For the meantime, implemenatations of {@link org.apache.tapestry.markup.MarkupFilter} are
 23    * wrappers around {@link org.apache.tapestry.util.text.ICharacterTranslator}. This class provides
 24    * handy methods for doing the grunt work.
 25    *
 26    * @author Howard M. Lewis Ship
 27    * @since 4.0
 28    */
 29    public class MarkupFilterUtils
 30    {
 31  28390 public static void print(PrintWriter writer, char[] data, int offset, int length,
 32    boolean escapeQuotes, ICharacterTranslator translator)
 33    {
 34  28390 StringBuffer buffer = new StringBuffer(length);
 35   
 36  28390 for (int i = 0; i < length; i++)
 37    {
 38  682637 char ch = data[offset + i];
 39   
 40  682637 if (ch == '"' && !escapeQuotes)
 41    {
 42  392 buffer.append(ch);
 43  392 continue;
 44    }
 45   
 46  682245 String translated = translator.translate(ch);
 47   
 48  682245 if (translated == null)
 49    {
 50  680695 buffer.append(ch);
 51  680695 continue;
 52    }
 53   
 54  1550 buffer.append(translated);
 55    }
 56   
 57    // We'll have to see if building up a buffer and then printing it in one go is the
 58    // most efficient route. It's hard to predict what will give the best performance,
 59    // but there's almost certainly a buffered writer between this code and the
 60    // character set encoder.
 61   
 62  28390 writer.print(buffer.toString());
 63    }
 64    }