Coverage Report - org.webslinger.ext.template.freemarker.WikiFreemarkerHelper
 
Classes in this File Line Coverage Branch Coverage Complexity
WikiFreemarkerHelper
0%
0/43
0%
0/6
1.75
 
 1  
 package org.webslinger.ext.template.freemarker;
 2  
 
 3  
 import java.io.StringWriter;
 4  
 import java.util.regex.Pattern;
 5  
 
 6  
 public class WikiFreemarkerHelper {
 7  0
     private static final Pattern PATTERN = Pattern.compile("(\n|\")");
 8  
     private final StringWriter writer;
 9  
 
 10  0
     protected WikiFreemarkerHelper(StringWriter writer) {
 11  0
         this.writer = writer;
 12  0
     }
 13  
 
 14  
     protected void writeArg(String name, Object value) {
 15  0
         if (value == null) return;
 16  0
         writer.write(name);
 17  0
         writer.write("=\"");
 18  0
         if (value instanceof Number) {
 19  0
             writer.write(value.toString());
 20  
         } else {
 21  0
             String s = value instanceof String ? (String) value : value.toString();
 22  0
             writer.write(PATTERN.matcher(s).replaceAll("\\\\$1"));
 23  
         }
 24  0
         writer.write('"');
 25  0
     }
 26  
 
 27  
     public void acceptMacro(String name, Object[] args) {
 28  0
         writer.write("<@");
 29  0
         writer.write(name);
 30  0
         for (int i = 0; i < args.length;) {
 31  0
             writer.write(' ');
 32  0
             String argName = (String) args[i++];
 33  0
             Object argValue = args[i++];
 34  0
             writeArg(argName, argValue);
 35  0
         }
 36  0
         writer.write("/>");
 37  0
     }
 38  
 
 39  
     public void endMacro(String name, Object[] args) {
 40  0
         writer.write("</@");
 41  0
         writer.write(name);
 42  0
         writer.write('>');
 43  0
     }
 44  
 
 45  
     public void startMacro(String name, Object[] args) {
 46  0
         writer.write("<@");
 47  0
         writer.write(name);
 48  0
         for (int i = 0; i < args.length;) {
 49  0
             writer.write(' ');
 50  0
             String argName = (String) args[i++];
 51  0
             Object argValue = args[i++];
 52  0
             writeArg(argName, argValue);
 53  0
         }
 54  0
         writer.write(">");
 55  0
     }
 56  
 
 57  
     public void acceptNewline(int count) {
 58  0
         for (int i = 0; i < count; i++) {
 59  0
             writer.write('\n');
 60  
         }
 61  0
     }
 62  
 
 63  
     public void acceptText(String text) {
 64  0
         writer.write(text);
 65  0
     }
 66  
 
 67  
     public void close() {
 68  0
     }
 69  
 }