<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def render_edge_with_node_label(self, name, edge, edge_settings):
 """ Render edge with label as separate node """

        props_to_display = self.extract_props(edge.settings)

        label = '<'
        label += "|".join(self.get_label(prop, value) for prop, value in props_to_display.items()) 
        label += '>'

        edge_node_name = "{}-{}".format(name, edge.to)

        self.gv_graph.node(edge_node_name, label=label, shape="record")

        self.gv_graph.edge(self.get_path_from_name(name), edge_node_name, arrowhead="none", **edge_settings)
        self.gv_graph.edge(edge_node_name, self.get_path_from_name(edge.to), **edge_settings)