def html_node(node_id, node, color):
    'Assemble a html style node for graphviz'
    input_files = resolve_input_functions(node._input)
    output_files = [repr(f).strip("'") for f in node._output]
    input_header = ('<b><font point-size="14">&#8618; input</font></b>' if input_files else '')
    output_header = ('<b><font point-size="14">output &rarr;</font></b>' if output_files else '')
    html_node = ['{node_id} [ shape=none, margin=0, label=<<table border="2" color="{color}" cellspacing="3" cellborder="0">'.format(node_id=node_id, color=color), '<tr><td>', '<b><font point-size="18">{node.name}</font></b>'.format(node=node), '</td></tr>', '<hr/>', '<tr><td align="left"> {input_header} </td></tr>'.format(input_header=input_header)]
    for filename in sorted(input_files):
        in_file = html.escape(filename)
        html_node.extend(['<tr>', '<td align="left"><font face="monospace">{in_file}</font></td>'.format(in_file=in_file), '</tr>'])
    html_node.append('<hr/>')
    html_node.append('<tr><td align="right"> {output_header} </td> </tr>'.format(output_header=output_header))
    for filename in sorted(output_files):
        out_file = html.escape(filename)
        html_node.extend(['<tr>', '<td align="left"><font face="monospace">{out_file}</font></td></tr>'.format(out_file=out_file)])
    html_node.append('</table>>]')
    return '\n'.join(html_node)
Assemble a html style node for graphviz
def html_node(node_id, node, color):
    
    input_files = resolve_input_functions(node._input)
    output_files = [repr(f).strip("'") for f in node._output]
    input_header = ('<b><font point-size="14">&#8618; input</font></b>' if input_files else )
    output_header = ('<b><font point-size="14">output &rarr;</font></b>' if output_files else )
    html_node = ['{node_id} [ shape=none, margin=0, label=<<table border="2" color="{color}" cellspacing="3" cellborder="0">'.format(node_id=node_id, color=color), '<tr><td>', '<b><font point-size="18">{node.name}</font></b>'.format(node=node), '</td></tr>', '<hr/>', '<tr><td align="left"> {input_header} </td></tr>'.format(input_header=input_header)]
    for filename in sorted(input_files):
        in_file = html.escape(filename)
        html_node.extend(['<tr>', '<td align="left"><font face="monospace">{in_file}</font></td>'.format(in_file=in_file), '</tr>'])
    html_node.append('<hr/>')
    html_node.append('<tr><td align="right"> {output_header} </td> </tr>'.format(output_header=output_header))
    for filename in sorted(output_files):
        out_file = html.escape(filename)
        html_node.extend(['<tr>', '<td align="left"><font face="monospace">{out_file}</font></td></tr>'.format(out_file=out_file)])
    html_node.append('</table>>]')
    return '\n'.join(html_node)