from html5lib import treewalkers

from htmlserializer import HTMLSerializer
from xhtmlserializer import XHTMLSerializer

def serialize(input, tree="simpletree", format="html", encoding=None,
              **serializer_opts):
    # XXX: Should we cache this?
    walker = treewalkers.getTreeWalker(tree) 
    if format == "html":
        s = HTMLSerializer(**serializer_opts)
    elif format == "xhtml":
        s = XHTMLSerializer(**serializer_opts)
    else:
        raise ValueError, "type must be either html or xhtml"
    return s.render(walker(input), encoding)