--- /dev/null
+package org.simantics.scl.compiler.markdown.nodes;\r
+\r
+import org.simantics.scl.compiler.markdown.internal.ExtensionNodeHandler;\r
+\r
+public class ExtensionBlockNode extends Node {\r
+ String extension;\r
+ String content;\r
+ \r
+ public ExtensionBlockNode(String extension, String content) {\r
+ this.extension = extension;\r
+ this.content = content;\r
+ }\r
+ \r
+ @Override\r
+ public void processExtensionNodes(ExtensionNodeHandler handler) {\r
+ DocumentNode replacingNodes = handler.expandBlock(extension, content);\r
+ if(replacingNodes != null) {\r
+ if(replacingNodes.firstChild == null)\r
+ remove();\r
+ else {\r
+ for(Node child = replacingNodes.firstChild; child != null; child = child.next)\r
+ child.parent = parent;\r
+ if(prev == null)\r
+ parent.firstChild = replacingNodes.firstChild;\r
+ else {\r
+ replacingNodes.firstChild.prev = prev;\r
+ prev.next = replacingNodes.firstChild;\r
+ }\r
+ if(next == null)\r
+ parent.lastChild = replacingNodes.lastChild;\r
+ else {\r
+ replacingNodes.lastChild.next = next;\r
+ next.prev = replacingNodes.lastChild;\r
+ }\r
+ }\r
+ }\r
+ }\r
+ \r
+ @Override\r
+ public void toHtml(StringBuilder b) {\r
+ b.append("::").append(extension).append('[').append(content).append(']');\r
+ }\r
+}\r