]> gerrit.simantics Code Review - simantics/platform.git/blobdiff - bundles/org.simantics.scl.compiler/src/org/simantics/scl/compiler/markdown/nodes/CodeBlockNode.java
Migrated source code from Simantics SVN
[simantics/platform.git] / bundles / org.simantics.scl.compiler / src / org / simantics / scl / compiler / markdown / nodes / CodeBlockNode.java
diff --git a/bundles/org.simantics.scl.compiler/src/org/simantics/scl/compiler/markdown/nodes/CodeBlockNode.java b/bundles/org.simantics.scl.compiler/src/org/simantics/scl/compiler/markdown/nodes/CodeBlockNode.java
new file mode 100644 (file)
index 0000000..797a21b
--- /dev/null
@@ -0,0 +1,44 @@
+package org.simantics.scl.compiler.markdown.nodes;
+
+import org.simantics.scl.compiler.markdown.internal.HtmlEscape;
+
+public class CodeBlockNode extends Node {
+
+    public boolean fenced;
+    public char fenceChar;
+    public int fenceLength;
+    public int fenceOffset;
+    public String infoString;
+    
+    public CodeBlockNode() {
+    }
+
+    public CodeBlockNode(char fenceChar, int fenceLength, int fenceOffset) {
+        this.fenced = true;
+        this.fenceChar = fenceChar;
+        this.fenceLength = fenceLength;
+        this.fenceOffset = fenceOffset;
+    }
+    
+    public CodeBlockNode(StringBuilder stringContent) {
+        this.stringContent = stringContent;
+    }
+    
+    @Override
+    public boolean acceptLines() {
+        return true;
+    }
+    
+    @Override
+    public void toHtml(StringBuilder b) {
+        if(infoString == null || infoString.isEmpty())
+            b.append("<pre><code>");
+        else {
+            String[] parts = infoString.split(" ");
+            b.append("<pre><code class=\"language-").append(parts[0]).append("\">");
+        }
+        if(stringContent.length() > 0)
+            b.append(HtmlEscape.escape(stringContent)).append('\n');
+        b.append("</code></pre>\n");
+    }
+}