module hunt.markdown.internal.renderer.NodeRendererMap; import hunt.markdown.node.Node; import hunt.markdown.renderer.NodeRenderer; import hunt.collection.HashMap; import hunt.collection.Map; class NodeRendererMap { private Map!(TypeInfo_Class, NodeRenderer) renderers; this() { renderers = new HashMap!(TypeInfo_Class, NodeRenderer)(32); } // public void add(NodeRenderer nodeRenderer) { // for (Class<? : Node> nodeType : nodeRenderer.getNodeTypes()) { // // Overwrite existing renderer // renderers.put(nodeType, nodeRenderer); // } // } public void add(NodeRenderer nodeRenderer) { foreach (nodeType ; nodeRenderer.getNodeTypes()) { // Overwrite existing renderer renderers.put(nodeType, nodeRenderer); } } public void render(Node node) { NodeRenderer nodeRenderer = renderers.get(typeid(node)); if (nodeRenderer !is null) { nodeRenderer.render(node); } } }