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