]> gerrit.simantics Code Review - simantics/platform.git/blobdiff - bundles/org.simantics.scl.compiler/src/org/simantics/scl/compiler/internal/parsing/documentation/HtmlUnparsingContext.java
Fixed all line endings of the repository
[simantics/platform.git] / bundles / org.simantics.scl.compiler / src / org / simantics / scl / compiler / internal / parsing / documentation / HtmlUnparsingContext.java
index ff5a2294f9f9691400872cc0348b8320b494546c..0ab900a0ceaf6d3f549629116a7df978c29705fb 100644 (file)
-package org.simantics.scl.compiler.internal.parsing.documentation;\r
-\r
-import java.io.IOException;\r
-import java.io.StringReader;\r
-import java.util.regex.Matcher;\r
-import java.util.regex.Pattern;\r
-\r
-import org.simantics.scl.compiler.elaboration.modules.Documentation;\r
-import org.simantics.scl.compiler.types.Type;\r
-import org.simantics.scl.compiler.types.util.TypeUnparsingContext;\r
-\r
-public abstract class HtmlUnparsingContext {\r
-    StringBuilder stringBuilder;\r
-    String listLevel = "";\r
-    \r
-    int tableOfContentsLevel = 0;\r
-    StringBuilder tableOfContents;\r
-    \r
-    int headerLinkId = 0;\r
-    \r
-    public HtmlUnparsingContext(StringBuilder stringBuilder) {\r
-        this.stringBuilder = stringBuilder;\r
-        this.tableOfContents = null;\r
-    }\r
-    \r
-    public HtmlUnparsingContext() {\r
-        this(new StringBuilder());\r
-        tableOfContents = new StringBuilder();\r
-    }\r
-\r
-    public StringBuilder getStringBuilder() {\r
-        return stringBuilder;\r
-    }\r
-    \r
-    public StringBuilder getTableOfContents() {\r
-        return tableOfContents;\r
-    }\r
-    \r
-    public void finishTableOfContents() {\r
-        while(tableOfContentsLevel > 0) {\r
-            tableOfContents.append("</ul>\n");\r
-            --tableOfContentsLevel;\r
-        }\r
-    }\r
-    \r
-    public void header(int level, String text) {\r
-        clear();        \r
-        ++headerLinkId;\r
-        stringBuilder.append("<h").append(level)\r
-        .append(" id=\"sec").append(headerLinkId).append("\">")\r
-        .append(text)\r
-        .append("</h").append(level).append(">\n");\r
-        \r
-        while(tableOfContentsLevel > level) {\r
-            tableOfContents.append("</ul>\n");\r
-            --tableOfContentsLevel;\r
-        }\r
-        while(tableOfContentsLevel < level) {\r
-            tableOfContents.append("<ul>\n");\r
-            ++tableOfContentsLevel;\r
-        }\r
-        tableOfContents.append("<li><a href=\"#sec")\r
-            .append(headerLinkId).append("\">")\r
-            .append(text).append("</a></li>\n");\r
-    }\r
-        \r
-    public void clear() {\r
-        setListLevel("");\r
-    }\r
-    \r
-    public void setListLevel(String newLevel) {\r
-        String oldLevel = this.listLevel;\r
-        int commonLevel = 0;\r
-        while(commonLevel < oldLevel.length() && commonLevel < newLevel.length() && \r
-                newLevel.charAt(commonLevel) == oldLevel.charAt(commonLevel))\r
-            ++commonLevel;\r
-        \r
-        for(int i=oldLevel.length()-1;i>=commonLevel;--i) {\r
-            char c = oldLevel.charAt(i);\r
-            if(c == '*')\r
-                stringBuilder.append("</ul>\n");\r
-            else if(c == '#')\r
-                stringBuilder.append("</ol>\n");\r
-        }\r
-        for(int i=commonLevel;i<newLevel.length();++i) {\r
-            char c = newLevel.charAt(i);\r
-            if(c == '*')\r
-                stringBuilder.append("<ul>\n");\r
-            else if(c == '#')\r
-                stringBuilder.append("<ol>\n");\r
-        }\r
-        \r
-        this.listLevel = newLevel;\r
-    }\r
-    \r
-    public void appendDocumentation(String doc) {\r
-        DocumentationLexer lexer = new DocumentationLexer(new StringReader(doc));\r
-\r
-        clear();\r
-        while(true) {\r
-            DocumentationElement element = null;\r
-            try {\r
-                element = lexer.nextToken();\r
-            } catch (IOException e) {\r
-                e.printStackTrace();\r
-            } catch (DocumentationParsingException e) {\r
-                e.printStackTrace();\r
-            }\r
-            if(element == null)\r
-                break;\r
-            element.toHtml(this);\r
-        }\r
-        clear();\r
-    }\r
-\r
-    public static String escape(String text) {\r
-        return text.replace("&", "&amp;").replace("<", "&lt;").replace(">", "&gt;");\r
-    }\r
-\r
-    public abstract void documentEntity(String ref);\r
-\r
-    public void appendType(TypeUnparsingContext tuc, Type type, int precedence) {\r
-        StringBuilder b = new StringBuilder();\r
-        type.toString(tuc, b, precedence);\r
-        stringBuilder.append(escape(b.toString()));\r
-    }\r
-    \r
-    public void appendType(TypeUnparsingContext tuc, Type type) {\r
-        appendType(tuc, type, 3);\r
-    }\r
-    \r
-    public void appendRef(String ref) {\r
-        stringBuilder.append("<a name=\"").append(ref).append("\" class=\"ref\">")\r
-                     .append(escape(ref)).append("</a>");\r
-    }\r
-\r
-    public Documentation toDocumentation() {\r
-        finishTableOfContents();\r
-        return new Documentation(stringBuilder.toString(), tableOfContents.toString());\r
-    }\r
-\r
-    private static final Pattern PARAGRAPH_PATTERN = Pattern.compile("'[^ ']+'|@[^@]+@");\r
-    \r
-    public void appendParagraph(String text) {\r
-        clear();\r
-        stringBuilder.append("<p>");        \r
-        Matcher m = PARAGRAPH_PATTERN.matcher(text);\r
-        int lastAppend = 0;\r
-        while(m.find()) {\r
-            int start = m.start();\r
-            int end = m.end();\r
-            \r
-            stringBuilder.append(text, lastAppend, start);\r
-            char c = text.charAt(start);\r
-            if(c == '\'') {\r
-                String ref = text.substring(start+1, end-1);\r
-                \r
-                stringBuilder.append("<code><a href=\"#").append(ref).append("\">")\r
-                             .append(ref)\r
-                             .append("</a></code>");\r
-            }\r
-            else if(c == '@') {\r
-                stringBuilder.append("<code>").append(text, start+1, end-1).append("</code>");\r
-            }\r
-            lastAppend = end;\r
-        }\r
-        stringBuilder.append(text, lastAppend, text.length());\r
-        stringBuilder.append("</p>\n");        \r
-    }\r
-}\r
+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("</ul>\n");
+            --tableOfContentsLevel;
+        }
+    }
+    
+    public void header(int level, String text) {
+        clear();        
+        ++headerLinkId;
+        stringBuilder.append("<h").append(level)
+        .append(" id=\"sec").append(headerLinkId).append("\">")
+        .append(text)
+        .append("</h").append(level).append(">\n");
+        
+        while(tableOfContentsLevel > level) {
+            tableOfContents.append("</ul>\n");
+            --tableOfContentsLevel;
+        }
+        while(tableOfContentsLevel < level) {
+            tableOfContents.append("<ul>\n");
+            ++tableOfContentsLevel;
+        }
+        tableOfContents.append("<li><a href=\"#sec")
+            .append(headerLinkId).append("\">")
+            .append(text).append("</a></li>\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("</ul>\n");
+            else if(c == '#')
+                stringBuilder.append("</ol>\n");
+        }
+        for(int i=commonLevel;i<newLevel.length();++i) {
+            char c = newLevel.charAt(i);
+            if(c == '*')
+                stringBuilder.append("<ul>\n");
+            else if(c == '#')
+                stringBuilder.append("<ol>\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("&", "&amp;").replace("<", "&lt;").replace(">", "&gt;");
+    }
+
+    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("<a name=\"").append(ref).append("\" class=\"ref\">")
+                     .append(escape(ref)).append("</a>");
+    }
+
+    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("<p>");        
+        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("<code><a href=\"#").append(ref).append("\">")
+                             .append(ref)
+                             .append("</a></code>");
+            }
+            else if(c == '@') {
+                stringBuilder.append("<code>").append(text, start+1, end-1).append("</code>");
+            }
+            lastAppend = end;
+        }
+        stringBuilder.append(text, lastAppend, text.length());
+        stringBuilder.append("</p>\n");        
+    }
+}