1 package de.lathanda.eos.common.gui;
3 import java.text.MessageFormat;
5 import de.lathanda.eos.baseparser.AbstractProgram;
6 import de.lathanda.eos.baseparser.InfoToken;
15 private static final String HEAD =
"<!DOCTYPE html>\n<html>\n<head>\n<title>\n{0}\n</title>\n<meta charset=\"UTF-8\">\n</head>\n<body>\n<code>";
16 private static final String HEAD2 =
"</code></body></html>";
17 private static final String COMMENT =
"<span style=\"color:green\">";
18 private static final String COMMENT2 =
"</span>";
19 private static final String LITERAL =
"<span style=\"color:blue\">";
20 private static final String LITERAL2 =
"</span>";
21 private static final String KEYWORD =
"<b>";
22 private static final String KEYWORD2 =
"</b>";
23 private static final String NEWLINE =
"<br>\n";
24 private static final String INDENT =
" ";
25 private static final String SPACE =
" ";
34 StringBuilder html =
new StringBuilder();
35 html.append(MessageFormat.format(HEAD, name));
37 String source = abstractProgram.
getSource();
40 token2html(source.substring(index, st.getBegin() + st.getLength()), st, html);
41 index = st.getBegin() + st.getLength();
45 return html.toString();
54 private static void token2html(String text,
InfoToken st, StringBuilder html) {
58 html.append(text2html(text));
59 html.append(COMMENT2);
63 html.append(text2html(text));
64 html.append(LITERAL2);
68 html.append(text2html(text));
69 html.append(KEYWORD2);
72 html.append(text2html(text));
81 private static String text2html(String text) {
82 StringBuilder filtered =
new StringBuilder();
83 for (
int i = 0; i < text.length(); i++) {
84 if (text.charAt(i) > 127) {
85 filtered.append(
"&#");
86 filtered.append((
int) text.charAt(i));
89 switch (text.charAt(i)) {
91 filtered.append(
"<");
93 filtered.append(
">");
95 filtered.append(text.charAt(i));
99 return filtered.toString().replace(
"\n", NEWLINE).replace(
"\t", INDENT).replace(
" ", SPACE);
static String export2html(AbstractProgram abstractProgram, String name)
LinkedList< InfoToken > getTokenList()