]> gerrit.simantics Code Review - simantics/platform.git/blobdiff - bundles/org.simantics.scl.compiler/src/org/simantics/scl/compiler/internal/parsing/documentation/Preformatted.java
Migrated source code from Simantics SVN
[simantics/platform.git] / bundles / org.simantics.scl.compiler / src / org / simantics / scl / compiler / internal / parsing / documentation / Preformatted.java
diff --git a/bundles/org.simantics.scl.compiler/src/org/simantics/scl/compiler/internal/parsing/documentation/Preformatted.java b/bundles/org.simantics.scl.compiler/src/org/simantics/scl/compiler/internal/parsing/documentation/Preformatted.java
new file mode 100644 (file)
index 0000000..6fe186a
--- /dev/null
@@ -0,0 +1,44 @@
+package org.simantics.scl.compiler.internal.parsing.documentation;\r
+\r
+public class Preformatted extends DocumentationElement {\r
+\r
+    String[] lines;\r
+    \r
+    public Preformatted(String content) {\r
+        lines = content.split("\n");\r
+        int indentation = Integer.MAX_VALUE;\r
+        for(int i=0;i<lines.length;++i) {\r
+            String line = lines[i];\r
+            for(int j=line.length();j>0;--j) {\r
+                char c = line.charAt(j-1);\r
+                if(c != '\n' && c != '\r' && c != ' ') {\r
+                    line = line.substring(0, j);\r
+                    break;\r
+                }\r
+            }\r
+            lines[i] = line;\r
+        }\r
+        for(String line : lines) {\r
+            for(int i=1;i<line.length()&&i<indentation;++i)\r
+                if(line.charAt(i) != ' ') {\r
+                    indentation = i;\r
+                    break;\r
+                }\r
+        }\r
+        for(int i=0;i<lines.length;++i) {\r
+            String line = lines[i];\r
+            lines[i] = indentation > line.length() ? "" : line.substring(indentation);\r
+        }\r
+    }\r
+\r
+    @Override\r
+    public void toHtml(HtmlUnparsingContext context) {\r
+        context.clear();\r
+        StringBuilder b = context.getStringBuilder();\r
+        b.append("<pre>\n");\r
+        for(String line : lines)\r
+            b.append(line).append('\n');\r
+        b.append("</pre>\n");\r
+    }\r
+\r
+}\r