8000 Escape RCdata option for xhtml compatibility · awesome-python/html5lib-python@cfe209b · GitHub
[go: up one dir, main page]

Skip to content

Commit cfe209b

Browse files
committed
Escape RCdata option for xhtml compatibility
--HG-- extra : convert_revision : svn%3Aacbfec75-9323-0410-a652-858a13e371e0/trunk%40805
1 parent 9b21b2a commit cfe209b

File tree

3 files changed

+14
-6
lines changed

3 files changed

+14
-6
lines changed

parse.py

Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -98,7 +98,8 @@ def printOutput(parser, document, opts):
9898
for opt in ['inject_meta_charset', 'strip_whitespace', 'sanitize',
9999
'omit_optional_tags', 'quote_attr_values', 'quote_char',
100100
'use_best_quote_char', 'minimize_boolean_attributes',
101-
'use_trailing_solidus', 'escape_lt_in_attrs']:
101+
'use_trailing_solidus', 'escape_lt_in_attrs',
102+
'escape_rcdata']:
102103
kwargs[opt] = getattr(opts,opt)
103104
if not kwargs['quote_char']: del kwargs['quote_char']
104105
tokens = treewalkers.getTreeWalker(opts.treebuilder)(document)
@@ -162,15 +163,15 @@ def getOptParser():
162163
default=False, dest="quote_attr_values",
163164
help="quote attribute values")
164165

165-
parser.add_option("", "--use_best_quote_char", action="store_true",
166+
parser.add_option("", "--use-best-quote-char", action="store_true",
166167
default=False, dest="use_best_quote_char",
167168
help="use best quote character")
168169

169170
parser.add_option("", "--quote-char", action="store",
170171
default=None, dest="quote_char",
171172
help="quote character")
172173

173-
parser.add_option("", "--no-minimize_boolean_attributes",
174+
parser.add_option("", "--no-minimize-boolean-attributes",
174175
action="store_false", default=True,
175176
dest="minimize_boolean_attributes",
176177
help="minimize boolean attributes")
@@ -179,10 +180,14 @@ def getOptParser():
179180
default=False, dest="use_trailing_solidus",
180181
help="use trailing solidus")
181182

182-
parser.add_option("", "--escape_lt_in_attrs", action="store_true",
183+
parser.add_option("", "--escape-lt-in-attrs", action="store_true",
183184
default=False, dest="escape_lt_in_attrs",
184185
help="escape less than signs in attribute values")
185186

187+
parser.add_option("", "--escape-rcdata", action="store_true",
188+
default=False, dest="escape_rcdata",
189+
help="escape rcdata element values")
190+
186191
parser.add_option("", "--sanitize", action="store_true", default=False,
187192
dest="sanitize", help="sanitize")
188193

src/serializer/htmlserializer.py

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -65,6 +65,7 @@ class HTMLSerializer(object):
6565
use_trailing_solidus = False
6666
space_before_trailing_solidus = True
6767
escape_lt_in_attrs = False
68+
escape_rcdata = False
6869

6970
omit_optional_tags = True
7071

@@ -78,7 +79,8 @@ def __init__(self, **kwargs):
7879
for attr in ("quote_attr_values", "quote_char", "use_best_quote_char",
7980
"minimize_boolean_attributes", "use_trailing_solidus",
8081
"space_before_trailing_solidus", "omit_optional_tags",
81-
"strip_whitespace", "inject_meta_charset", "escape_lt_in_attrs"):
82+
"strip_whitespace", "inject_meta_charset", "escape_lt_in_attrs",
83+
"escape_rcdata"):
8284
setattr(self, attr, kwargs.get(attr, getattr(self, attr)))
8385
self.errors = []
8486
self.strict = False
@@ -118,7 +120,7 @@ def serialize(self, treewalker, encoding=None):
118120

119121
elif type in ("StartTag", "EmptyTag"):
120122
name = token["name"]
121-
if name in rcdataElements:
123+
if name in rcdataElements and not self.escape_rcdata:
122124
in_cdata = True
123125
elif in_cdata:
124126
self.serializeError(_("Unexpected child element of a CDATA element"))

src/serializer/xhtmlserializer.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,3 +6,4 @@ class XHTMLSerializer(HTMLSerializer):
66
use_trailing_solidus = True
77
escape_lt_in_attrs = True
88
omit_optional_tags = False
9+
escape_rcdata = True

0 commit comments

Comments
 (0)
0