module hunt.markdown.ext.table.internal.TableNodeRenderer; // import hunt.collection.Arrays; import hunt.collection.HashSet; import hunt.collection.Set; import hunt.markdown.ext.table.TableBlock; import hunt.markdown.ext.table.TableBody; import hunt.markdown.ext.table.TableCell; import hunt.markdown.ext.table.TableHead; import hunt.markdown.ext.table.TableRow; import hunt.markdown.node.Node; import hunt.markdown.renderer.NodeRenderer; abstract class TableNodeRenderer : NodeRenderer { // TypeInfo for D override public Set!TypeInfo_Class getNodeTypes() { return new HashSet!TypeInfo_Class([ typeid(TableBlock), typeid(TableHead), typeid(TableBody), typeid(TableRow), typeid(TableCell) ]); } public void render(Node node) { if (cast(TableBlock)node !is null) { renderBlock(cast(TableBlock) node); } else if (cast(TableHead)node !is null ) { renderHead(cast(TableHead) node); } else if (cast(TableBody)node !is null) { renderBody(cast(TableBody) node); } else if (cast(TableRow)node !is null) { renderRow(cast(TableRow) node); } else if (cast(TableCell)node !is null) { renderCell(cast(TableCell) node); } } protected abstract void renderBlock(TableBlock node); protected abstract void renderHead(TableHead node); protected abstract void renderBody(TableBody node); protected abstract void renderRow(TableRow node); protected abstract void renderCell(TableCell node); }