diff --git a/html5lib/serializer/htmlserializer.py b/html5lib/serializer.py similarity index 95% rename from html5lib/serializer/htmlserializer.py rename to html5lib/serializer.py index 8a9439df..d58a6857 100644 --- a/html5lib/serializer/htmlserializer.py +++ b/html5lib/serializer.py @@ -5,9 +5,9 @@ from codecs import register_error, xmlcharrefreplace_errors -from ..constants import voidElements, booleanAttributes, spaceCharacters -from ..constants import rcdataElements, entities, xmlEntities -from .. import utils +from .constants import voidElements, booleanAttributes, spaceCharacters +from .constants import rcdataElements, entities, xmlEntities +from . import treewalkers, utils from xml.sax.saxutils import escape spaceCharacters = "".join(spaceCharacters) @@ -73,6 +73,13 @@ def htmlentityreplace_errors(exc): register_error("htmlentityreplace", htmlentityreplace_errors) +def serialize(input, tree="etree", encoding=None, **serializer_opts): + # XXX: Should we cache this? + walker = treewalkers.getTreeWalker(tree) + s = HTMLSerializer(**serializer_opts) + return s.render(walker(input), encoding) + + class HTMLSerializer(object): # attribute quoting options @@ -181,24 +188,24 @@ def serialize(self, treewalker, encoding=None): self.errors = [] if encoding and self.inject_meta_charset: - from ..filters.inject_meta_charset import Filter + from .filters.inject_meta_charset import Filter treewalker = Filter(treewalker, encoding) # Alphabetical attributes is here under the assumption that none of # the later filters add or change order of attributes; it needs to be # before the sanitizer so escaped elements come out correctly if self.alphabetical_attributes: - from ..filters.alphabeticalattributes import Filter + from .filters.alphabeticalattributes import Filter treewalker = Filter(treewalker) # WhitespaceFilter should be used before OptionalTagFilter # for maximum efficiently of this latter filter if self.strip_whitespace: - from ..filters.whitespace import Filter + from .filters.whitespace import Filter treewalker = Filter(treewalker) if self.sanitize: - from ..filters.sanitizer import Filter + from .filters.sanitizer import Filter treewalker = Filter(treewalker) if self.omit_optional_tags: - from ..filters.optionaltags import Filter + from .filters.optionaltags import Filter treewalker = Filter(treewalker) for token in treewalker: diff --git a/html5lib/serializer/__init__.py b/html5lib/serializer/__init__.py deleted file mode 100644 index 8380839a..00000000 --- a/html5lib/serializer/__init__.py +++ /dev/null @@ -1,16 +0,0 @@ -from __future__ import absolute_import, division, unicode_literals - -from .. import treewalkers - -from .htmlserializer import HTMLSerializer - - -def serialize(input, tree="etree", format="html", encoding=None, - **serializer_opts): - # XXX: Should we cache this? - walker = treewalkers.getTreeWalker(tree) - if format == "html": - s = HTMLSerializer(**serializer_opts) - else: - raise ValueError("type must be html") - return s.render(walker(input), encoding)