1 package de.java2html.converter; 2 3 import java.io.BufferedWriter ; 4 import java.io.IOException ; 5 6 import de.java2html.javasource.JavaSource; 7 import de.java2html.javasource.JavaSourceType; 8 import de.java2html.options.JavaSourceConversionOptions; 9 import de.java2html.options.JavaSourceStyleTable; 10 11 15 public class JavaSource2Xhtml11Converter extends AbstractJavaSourceToXmlConverter { 16 17 private final static String XHTML_HEADER_END = "</head>\n<body>\n"; 18 private final static String XHTML_FOOTER = "</body>\n</html>"; 19 20 public JavaSource2Xhtml11Converter() { 21 super(new ConverterMetaData("xhtml11", "XHTML 1.1 (with stylesheet)", "xhtml")); 22 } 23 24 protected String getHeaderEnd() { 25 return XHTML_HEADER_END; 26 } 27 28 protected String getFooter() { 29 return XHTML_FOOTER; 30 } 31 32 protected String createHeader(JavaSourceStyleTable styleTable, String title) { 33 return XML_HEADER + createHeaderStart(styleTable, title); 34 } 35 36 private String createHeaderStart(JavaSourceStyleTable styleTable, String title) { 37 if (title == null) { 38 title = ""; } 40 return "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.1//EN\" \"http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd\">\n" 41 + "<html xmlns=\"http://www.w3.org/1999/xhtml\" xml:lang=\"en\">\n" 42 + "<head>\n<style type=\"text/css\">\n" 43 + createStyleSheet(styleTable) 44 + "</style>\n" 45 + "<meta http-equiv=\"Content-Type\" content=\"application/xhtml+xml; charset=UTF-8\" />\n" 46 + "<title>" 47 + title 48 + "</title>\n"; 49 } 50 51 public void convert(JavaSource source, JavaSourceConversionOptions options, BufferedWriter writer) 52 throws IOException { 53 if (source == null) { 54 throw new IllegalStateException ("Trying to write out converted code without having source set."); 55 } 56 57 String sourceCode = source.getCode(); 58 JavaSourceType[] sourceTypes = source.getClassification(); 59 60 if (lineNumbers) { 61 writer.write("<table class=\"java\">\n<tr class=\"java\">\n<td valign=\"top\" class=\"java-ln\">"); 62 writer.newLine(); 63 64 if (pre) { 65 writer.write("<pre class=\"java-ln\">"); 66 } 67 else { 68 writer.write("<code class=\"java-ln\">"); 69 } 70 for (int i = 1; i <= source.getLineCount(); i++) { 71 writer.write(String.valueOf(i) + lineEnd); 72 writer.newLine(); 73 } 74 76 if (pre) { 77 writer.write("</pre>\n"); 78 } 79 else { 80 writer.write("</code>\n"); 81 } 82 writer.write("</td>\n"); 83 writer.write("<td valign=\"top\" class=\"java\">"); 84 writer.newLine(); 85 } 86 87 else if (pre) { 88 writer.write("<pre class=\"java\">"); 89 } 90 else { 91 writer.write("<div class=\"java\"><code class=\"java\">"); 92 } 93 94 int start = 0; 95 int end = 0; 96 97 while (start < sourceTypes.length) { 98 while (end < sourceTypes.length - 1 99 && (sourceTypes[end + 1] == sourceTypes[start] || sourceTypes[end + 1] == JavaSourceType.BACKGROUND)) { 100 ++end; 101 } 102 toXml(sourceCode, sourceTypes, start, end, writer); 103 start = end + 1; 104 end = start; 105 } 106 107 if (pre) { 108 writer.write("</pre>"); 109 } 110 else { 111 writer.write("</code>"); 112 } 113 114 if (lineNumbers) { 115 writer.write("</td>\n</tr>\n</table>"); 116 writer.newLine(); 117 } 118 else if (!pre) { 119 writer.write("</div>"); 120 } 121 } 122 } | Popular Tags |