EOS 2  1.1.0
Einfache Objektbasierte Sprache
HtmlExport.java
gehe zur Dokumentation dieser Datei
1 package de.lathanda.eos.common.gui;
2 
3 import java.text.MessageFormat;
4 
5 import de.lathanda.eos.baseparser.AbstractProgram;
6 import de.lathanda.eos.baseparser.InfoToken;
7 
13 public class HtmlExport {
14 
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 = "&nbsp;&nbsp;&nbsp;&nbsp;";
25  private static final String SPACE = "&nbsp;";
26 
33  public static String export2html(AbstractProgram abstractProgram, String name) {
34  StringBuilder html = new StringBuilder();
35  html.append(MessageFormat.format(HEAD, name));
36  int index = 0;
37  String source = abstractProgram.getSource();
38  for (InfoToken st : abstractProgram.getTokenList()) {
39  if (!st.isEof()) {
40  token2html(source.substring(index, st.getBegin() + st.getLength()), st, html);
41  index = st.getBegin() + st.getLength();
42  }
43  }
44  html.append(HEAD2);
45  return html.toString();
46  }
47 
54  private static void token2html(String text, InfoToken st, StringBuilder html) {
55  switch (st.getFormat()) {
56  case COMMENT:
57  html.append(COMMENT);
58  html.append(text2html(text));
59  html.append(COMMENT2);
60  break;
61  case LITERAL:
62  html.append(LITERAL);
63  html.append(text2html(text));
64  html.append(LITERAL2);
65  break;
66  case KEYWORD:
67  html.append(KEYWORD);
68  html.append(text2html(text));
69  html.append(KEYWORD2);
70  break;
71  default:
72  html.append(text2html(text));
73  }
74  }
75 
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));
87  filtered.append(";");
88  } else {
89  switch (text.charAt(i)) {
90  case '<':
91  filtered.append("&lt;");
92  case '>':
93  filtered.append("&gt;");
94  default:
95  filtered.append(text.charAt(i));
96  }
97  }
98  }
99  return filtered.toString().replace("\n", NEWLINE).replace("\t", INDENT).replace(" ", SPACE);
100  }
101 
102 }
static String export2html(AbstractProgram abstractProgram, String name)
Definition: HtmlExport.java:33
LinkedList< InfoToken > getTokenList()
Impressum