]> gerrit.simantics Code Review - simantics/platform.git/blobdiff - bundles/org.simantics.scl.compiler/src/org/simantics/scl/compiler/markdown/nodes/ExtensionBlockNode.java
Migrated source code from Simantics SVN
[simantics/platform.git] / bundles / org.simantics.scl.compiler / src / org / simantics / scl / compiler / markdown / nodes / ExtensionBlockNode.java
diff --git a/bundles/org.simantics.scl.compiler/src/org/simantics/scl/compiler/markdown/nodes/ExtensionBlockNode.java b/bundles/org.simantics.scl.compiler/src/org/simantics/scl/compiler/markdown/nodes/ExtensionBlockNode.java
new file mode 100644 (file)
index 0000000..fea8434
--- /dev/null
@@ -0,0 +1,43 @@
+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