]> gerrit.simantics Code Review - simantics/platform.git/blob - bundles/org.simantics.scl.compiler/src/org/simantics/scl/compiler/markdown/nodes/CodeBlockNode.java
797a21bf03665e416275f15298897d4122cbef0e
[simantics/platform.git] / bundles / org.simantics.scl.compiler / src / org / simantics / scl / compiler / markdown / nodes / CodeBlockNode.java
1 package org.simantics.scl.compiler.markdown.nodes;
2
3 import org.simantics.scl.compiler.markdown.internal.HtmlEscape;
4
5 public class CodeBlockNode extends Node {
6
7     public boolean fenced;
8     public char fenceChar;
9     public int fenceLength;
10     public int fenceOffset;
11     public String infoString;
12     
13     public CodeBlockNode() {
14     }
15
16     public CodeBlockNode(char fenceChar, int fenceLength, int fenceOffset) {
17         this.fenced = true;
18         this.fenceChar = fenceChar;
19         this.fenceLength = fenceLength;
20         this.fenceOffset = fenceOffset;
21     }
22     
23     public CodeBlockNode(StringBuilder stringContent) {
24         this.stringContent = stringContent;
25     }
26     
27     @Override
28     public boolean acceptLines() {
29         return true;
30     }
31     
32     @Override
33     public void toHtml(StringBuilder b) {
34         if(infoString == null || infoString.isEmpty())
35             b.append("<pre><code>");
36         else {
37             String[] parts = infoString.split(" ");
38             b.append("<pre><code class=\"language-").append(parts[0]).append("\">");
39         }
40         if(stringContent.length() > 0)
41             b.append(HtmlEscape.escape(stringContent)).append('\n');
42         b.append("</code></pre>\n");
43     }
44 }