|
5 | 5 |
|
6 | 6 | fromcodecsimportregister_error,xmlcharrefreplace_errors
|
7 | 7 |
|
8 |
| -from ..constantsimportvoidElements,booleanAttributes,spaceCharacters |
9 |
| -from ..constantsimportrcdataElements,entities,xmlEntities |
10 |
| -from ..importutils |
| 8 | +from .constantsimportvoidElements,booleanAttributes,spaceCharacters |
| 9 | +from .constantsimportrcdataElements,entities,xmlEntities |
| 10 | +from .importtreewalkers,utils |
11 | 11 | fromxml.sax.saxutilsimportescape
|
12 | 12 |
|
13 | 13 | spaceCharacters="".join(spaceCharacters)
|
@@ -73,6 +73,13 @@ def htmlentityreplace_errors(exc):
|
73 | 73 | register_error("htmlentityreplace",htmlentityreplace_errors)
|
74 | 74 |
|
75 | 75 |
|
| 76 | +defserialize(input,tree="etree",encoding=None,**serializer_opts): |
| 77 | +# XXX: Should we cache this? |
| 78 | +walker=treewalkers.getTreeWalker(tree) |
| 79 | +s=HTMLSerializer(**serializer_opts) |
| 80 | +returns.render(walker(input),encoding) |
| 81 | + |
| 82 | + |
76 | 83 | classHTMLSerializer(object):
|
77 | 84 |
|
78 | 85 | # attribute quoting options
|
@@ -181,24 +188,24 @@ def serialize(self, treewalker, encoding=None):
|
181 | 188 | self.errors= []
|
182 | 189 |
|
183 | 190 | ifencodingandself.inject_meta_charset:
|
184 |
| -from ..filters.inject_meta_charsetimportFilter |
| 191 | +from .filters.inject_meta_charsetimportFilter |
185 | 192 | treewalker=Filter(treewalker,encoding)
|
186 | 193 | # Alphabetical attributes is here under the assumption that none of
|
187 | 194 | # the later filters add or change order of attributes; it needs to be
|
188 | 195 | # before the sanitizer so escaped elements come out correctly
|
189 | 196 | ifself.alphabetical_attributes:
|
190 |
| -from ..filters.alphabeticalattributesimportFilter |
| 197 | +from .filters.alphabeticalattributesimportFilter |
191 | 198 | treewalker=Filter(treewalker)
|
192 | 199 | # WhitespaceFilter should be used before OptionalTagFilter
|
193 | 200 | # for maximum efficiently of this latter filter
|
194 | 201 | ifself.strip_whitespace:
|
195 |
| -from ..filters.whitespaceimportFilter |
| 202 | +from .filters.whitespaceimportFilter |
196 | 203 | treewalker=Filter(treewalker)
|
197 | 204 | ifself.sanitize:
|
198 |
| -from ..filters.sanitizerimportFilter |
| 205 | +from .filters.sanitizerimportFilter |
199 | 206 | treewalker=Filter(treewalker)
|
200 | 207 | ifself.omit_optional_tags:
|
201 |
| -from ..filters.optionaltagsimportFilter |
| 208 | +from .filters.optionaltagsimportFilter |
202 | 209 | treewalker=Filter(treewalker)
|
203 | 210 |
|
204 | 211 | fortokenintreewalker:
|
|