]> gerrit.simantics Code Review - simantics/platform.git/blob - bundles/org.simantics.scl.compiler/src/org/simantics/scl/compiler/markdown/nodes/ExtensionBlockNode.java
Markdown to HTML generator has now genration options
[simantics/platform.git] / bundles / org.simantics.scl.compiler / src / org / simantics / scl / compiler / markdown / nodes / ExtensionBlockNode.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.ExtensionNodeHandler;
5
6 public class ExtensionBlockNode extends Node {
7     String extension;
8     String content;
9     
10     public ExtensionBlockNode(String extension, String content) {
11         this.extension = extension;
12         this.content = content;
13     }
14     
15     @Override
16     public void processExtensionNodes(ExtensionNodeHandler handler) {
17         DocumentNode replacingNodes = handler.expandBlock(extension, content);
18         if(replacingNodes != null) {
19             if(replacingNodes.firstChild == null)
20                 remove();
21             else {
22                 for(Node child = replacingNodes.firstChild; child != null; child = child.next)
23                     child.parent = parent;
24                 if(prev == null)
25                     parent.firstChild = replacingNodes.firstChild;
26                 else {
27                     replacingNodes.firstChild.prev = prev;
28                     prev.next = replacingNodes.firstChild;
29                 }
30                 if(next == null)
31                     parent.lastChild = replacingNodes.lastChild;
32                 else {
33                     replacingNodes.lastChild.next = next;
34                     next.prev = replacingNodes.lastChild;
35                 }
36             }
37         }
38     }
39     
40     @Override
41     public void toHtml(HtmlGenerationContext context, StringBuilder b) {
42         b.append("::").append(extension).append('[').append(content).append(']');
43     }
44 }