5
5
6
6
from codecs import register_error , xmlcharrefreplace_errors
7
7
8
- from .. constants import voidElements , booleanAttributes , spaceCharacters
9
- from .. constants import rcdataElements , entities , xmlEntities
10
- from .. import utils
8
+ from .constants import voidElements , booleanAttributes , spaceCharacters
9
+ from .constants import rcdataElements , entities , xmlEntities
10
+ from . import treewalkers , utils
11
11
from xml .sax .saxutils import escape
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
+ def serialize (input , tree = "etree" , encoding = None , ** serializer_opts ):
77
+ # XXX: Should we cache this?
78
+ walker = treewalkers .getTreeWalker (tree )
79
+ s = HTMLSerializer (** serializer_opts )
80
+ return s .render (walker (input ), encoding )
81
+
82
+
76
83
class HTMLSerializer (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
if encoding and self .inject_meta_charset :
184
- from .. filters .inject_meta_charset import Filter
191
+ from .filters .inject_meta_charset import Filter
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
if self .alphabetical_attributes :
190
- from .. filters .alphabeticalattributes import Filter
197
+ from .filters .alphabeticalattributes import Filter
191
198
treewalker = Filter (treewalker )
192
199
# WhitespaceFilter should be used before OptionalTagFilter
193
200
# for maximum efficiently of this latter filter
194
201
if self .strip_whitespace :
195
- from .. filters .whitespace import Filter
202
+ from .filters .whitespace import Filter
196
203
treewalker = Filter (treewalker )
197
204
if self .sanitize :
198
- from .. filters .sanitizer import Filter
205
+ from .filters .sanitizer import Filter
199
206
treewalker = Filter (treewalker )
200
207
if self .omit_optional_tags :
201
- from .. filters .optionaltags import Filter
208
+ from .filters .optionaltags import Filter
202
209
treewalker = Filter (treewalker )
203
210
204
211
for token in treewalker :
0 commit comments