X-Git-Url: https://gerrit.simantics.org/r/gitweb?a=blobdiff_plain;ds=sidebyside;f=bundles%2Forg.simantics.scl.compiler%2Fsrc%2Forg%2Fsimantics%2Fscl%2Fcompiler%2Finternal%2Fparsing%2Fdocumentation%2FHtmlUnparsingContext.java;h=0ab900a0ceaf6d3f549629116a7df978c29705fb;hb=ceb7e16b90ce8ab7570b1dd905d2e14e6ceea9b2;hp=ff5a2294f9f9691400872cc0348b8320b494546c;hpb=969bd23cab98a79ca9101af33334000879fb60c5;p=simantics%2Fplatform.git
diff --git a/bundles/org.simantics.scl.compiler/src/org/simantics/scl/compiler/internal/parsing/documentation/HtmlUnparsingContext.java b/bundles/org.simantics.scl.compiler/src/org/simantics/scl/compiler/internal/parsing/documentation/HtmlUnparsingContext.java
index ff5a2294f..0ab900a0c 100644
--- a/bundles/org.simantics.scl.compiler/src/org/simantics/scl/compiler/internal/parsing/documentation/HtmlUnparsingContext.java
+++ b/bundles/org.simantics.scl.compiler/src/org/simantics/scl/compiler/internal/parsing/documentation/HtmlUnparsingContext.java
@@ -1,170 +1,170 @@
-package org.simantics.scl.compiler.internal.parsing.documentation;
-
-import java.io.IOException;
-import java.io.StringReader;
-import java.util.regex.Matcher;
-import java.util.regex.Pattern;
-
-import org.simantics.scl.compiler.elaboration.modules.Documentation;
-import org.simantics.scl.compiler.types.Type;
-import org.simantics.scl.compiler.types.util.TypeUnparsingContext;
-
-public abstract class HtmlUnparsingContext {
- StringBuilder stringBuilder;
- String listLevel = "";
-
- int tableOfContentsLevel = 0;
- StringBuilder tableOfContents;
-
- int headerLinkId = 0;
-
- public HtmlUnparsingContext(StringBuilder stringBuilder) {
- this.stringBuilder = stringBuilder;
- this.tableOfContents = null;
- }
-
- public HtmlUnparsingContext() {
- this(new StringBuilder());
- tableOfContents = new StringBuilder();
- }
-
- public StringBuilder getStringBuilder() {
- return stringBuilder;
- }
-
- public StringBuilder getTableOfContents() {
- return tableOfContents;
- }
-
- public void finishTableOfContents() {
- while(tableOfContentsLevel > 0) {
- tableOfContents.append("\n");
- --tableOfContentsLevel;
- }
- }
-
- public void header(int level, String text) {
- clear();
- ++headerLinkId;
- stringBuilder.append("\n");
-
- while(tableOfContentsLevel > level) {
- tableOfContents.append("\n");
- --tableOfContentsLevel;
- }
- while(tableOfContentsLevel < level) {
- tableOfContents.append("
\n");
- ++tableOfContentsLevel;
- }
- tableOfContents.append("- ")
- .append(text).append("
\n");
- }
-
- public void clear() {
- setListLevel("");
- }
-
- public void setListLevel(String newLevel) {
- String oldLevel = this.listLevel;
- int commonLevel = 0;
- while(commonLevel < oldLevel.length() && commonLevel < newLevel.length() &&
- newLevel.charAt(commonLevel) == oldLevel.charAt(commonLevel))
- ++commonLevel;
-
- for(int i=oldLevel.length()-1;i>=commonLevel;--i) {
- char c = oldLevel.charAt(i);
- if(c == '*')
- stringBuilder.append("
\n");
- else if(c == '#')
- stringBuilder.append("\n");
- }
- for(int i=commonLevel;i\n");
- else if(c == '#')
- stringBuilder.append("\n");
- }
-
- this.listLevel = newLevel;
- }
-
- public void appendDocumentation(String doc) {
- DocumentationLexer lexer = new DocumentationLexer(new StringReader(doc));
-
- clear();
- while(true) {
- DocumentationElement element = null;
- try {
- element = lexer.nextToken();
- } catch (IOException e) {
- e.printStackTrace();
- } catch (DocumentationParsingException e) {
- e.printStackTrace();
- }
- if(element == null)
- break;
- element.toHtml(this);
- }
- clear();
- }
-
- public static String escape(String text) {
- return text.replace("&", "&").replace("<", "<").replace(">", ">");
- }
-
- public abstract void documentEntity(String ref);
-
- public void appendType(TypeUnparsingContext tuc, Type type, int precedence) {
- StringBuilder b = new StringBuilder();
- type.toString(tuc, b, precedence);
- stringBuilder.append(escape(b.toString()));
- }
-
- public void appendType(TypeUnparsingContext tuc, Type type) {
- appendType(tuc, type, 3);
- }
-
- public void appendRef(String ref) {
- stringBuilder.append("")
- .append(escape(ref)).append("");
- }
-
- public Documentation toDocumentation() {
- finishTableOfContents();
- return new Documentation(stringBuilder.toString(), tableOfContents.toString());
- }
-
- private static final Pattern PARAGRAPH_PATTERN = Pattern.compile("'[^ ']+'|@[^@]+@");
-
- public void appendParagraph(String text) {
- clear();
- stringBuilder.append("");
- Matcher m = PARAGRAPH_PATTERN.matcher(text);
- int lastAppend = 0;
- while(m.find()) {
- int start = m.start();
- int end = m.end();
-
- stringBuilder.append(text, lastAppend, start);
- char c = text.charAt(start);
- if(c == '\'') {
- String ref = text.substring(start+1, end-1);
-
- stringBuilder.append("")
- .append(ref)
- .append("
");
- }
- else if(c == '@') {
- stringBuilder.append("").append(text, start+1, end-1).append("
");
- }
- lastAppend = end;
- }
- stringBuilder.append(text, lastAppend, text.length());
- stringBuilder.append("
\n");
- }
-}
+package org.simantics.scl.compiler.internal.parsing.documentation;
+
+import java.io.IOException;
+import java.io.StringReader;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
+
+import org.simantics.scl.compiler.elaboration.modules.Documentation;
+import org.simantics.scl.compiler.types.Type;
+import org.simantics.scl.compiler.types.util.TypeUnparsingContext;
+
+public abstract class HtmlUnparsingContext {
+ StringBuilder stringBuilder;
+ String listLevel = "";
+
+ int tableOfContentsLevel = 0;
+ StringBuilder tableOfContents;
+
+ int headerLinkId = 0;
+
+ public HtmlUnparsingContext(StringBuilder stringBuilder) {
+ this.stringBuilder = stringBuilder;
+ this.tableOfContents = null;
+ }
+
+ public HtmlUnparsingContext() {
+ this(new StringBuilder());
+ tableOfContents = new StringBuilder();
+ }
+
+ public StringBuilder getStringBuilder() {
+ return stringBuilder;
+ }
+
+ public StringBuilder getTableOfContents() {
+ return tableOfContents;
+ }
+
+ public void finishTableOfContents() {
+ while(tableOfContentsLevel > 0) {
+ tableOfContents.append("\n");
+ --tableOfContentsLevel;
+ }
+ }
+
+ public void header(int level, String text) {
+ clear();
+ ++headerLinkId;
+ stringBuilder.append("\n");
+
+ while(tableOfContentsLevel > level) {
+ tableOfContents.append("\n");
+ --tableOfContentsLevel;
+ }
+ while(tableOfContentsLevel < level) {
+ tableOfContents.append("\n");
+ ++tableOfContentsLevel;
+ }
+ tableOfContents.append("- ")
+ .append(text).append("
\n");
+ }
+
+ public void clear() {
+ setListLevel("");
+ }
+
+ public void setListLevel(String newLevel) {
+ String oldLevel = this.listLevel;
+ int commonLevel = 0;
+ while(commonLevel < oldLevel.length() && commonLevel < newLevel.length() &&
+ newLevel.charAt(commonLevel) == oldLevel.charAt(commonLevel))
+ ++commonLevel;
+
+ for(int i=oldLevel.length()-1;i>=commonLevel;--i) {
+ char c = oldLevel.charAt(i);
+ if(c == '*')
+ stringBuilder.append("
\n");
+ else if(c == '#')
+ stringBuilder.append("
\n");
+ }
+ for(int i=commonLevel;i\n");
+ else if(c == '#')
+ stringBuilder.append("\n");
+ }
+
+ this.listLevel = newLevel;
+ }
+
+ public void appendDocumentation(String doc) {
+ DocumentationLexer lexer = new DocumentationLexer(new StringReader(doc));
+
+ clear();
+ while(true) {
+ DocumentationElement element = null;
+ try {
+ element = lexer.nextToken();
+ } catch (IOException e) {
+ e.printStackTrace();
+ } catch (DocumentationParsingException e) {
+ e.printStackTrace();
+ }
+ if(element == null)
+ break;
+ element.toHtml(this);
+ }
+ clear();
+ }
+
+ public static String escape(String text) {
+ return text.replace("&", "&").replace("<", "<").replace(">", ">");
+ }
+
+ public abstract void documentEntity(String ref);
+
+ public void appendType(TypeUnparsingContext tuc, Type type, int precedence) {
+ StringBuilder b = new StringBuilder();
+ type.toString(tuc, b, precedence);
+ stringBuilder.append(escape(b.toString()));
+ }
+
+ public void appendType(TypeUnparsingContext tuc, Type type) {
+ appendType(tuc, type, 3);
+ }
+
+ public void appendRef(String ref) {
+ stringBuilder.append("")
+ .append(escape(ref)).append("");
+ }
+
+ public Documentation toDocumentation() {
+ finishTableOfContents();
+ return new Documentation(stringBuilder.toString(), tableOfContents.toString());
+ }
+
+ private static final Pattern PARAGRAPH_PATTERN = Pattern.compile("'[^ ']+'|@[^@]+@");
+
+ public void appendParagraph(String text) {
+ clear();
+ stringBuilder.append("");
+ Matcher m = PARAGRAPH_PATTERN.matcher(text);
+ int lastAppend = 0;
+ while(m.find()) {
+ int start = m.start();
+ int end = m.end();
+
+ stringBuilder.append(text, lastAppend, start);
+ char c = text.charAt(start);
+ if(c == '\'') {
+ String ref = text.substring(start+1, end-1);
+
+ stringBuilder.append("")
+ .append(ref)
+ .append("
");
+ }
+ else if(c == '@') {
+ stringBuilder.append("").append(text, start+1, end-1).append("
");
+ }
+ lastAppend = end;
+ }
+ stringBuilder.append(text, lastAppend, text.length());
+ stringBuilder.append("
\n");
+ }
+}