|
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: |
|