Skip to content

Commit 40d1820

Browse files
committed
Make RuleSet.selector and Declaration.value plain lists i.s.o ContainerToken
1 parent 25d6af8 commit 40d1820

File tree

4 files changed

+21
-26
lines changed

4 files changed

+21
-26
lines changed

‎tinycss/css21.py‎

Lines changed: 11 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,6 @@
1515

1616
from .decodingimportdecode
1717
from .tokenizerimporttokenize_grouped
18-
from .token_dataimportContainerToken
1918

2019

2120
# stylesheet : [ CDO | CDC | S | statement ]*;
@@ -145,8 +144,9 @@ class RuleSet(object):
145144
146145
.. attribute:: selector
147146
148-
The selecor as a :class:`~tinycss.token_data.ContainerToken` object.
149-
In CSS 3 terminology, this is actually a selector group.
147+
The selector as a list of :class:`~.token_data.Token` or
148+
:class:`~.token_data.ContainerToken`.
149+
In CSS 3, this is actually called a selector group.
150150
151151
.. attribute:: declarations
152152
@@ -176,7 +176,8 @@ class Declaration(object):
176176
177177
.. attribute:: value
178178
179-
The property value as a :class:`~tinycss.token_data.ContainerToken`.
179+
The property value as a list of :class:`~.token_data.Token` or
180+
:class:`~.token_data.ContainerToken`.
180181
181182
The value is not parsed. UAs using tinycss may only support
182183
some properties or some values and tinycss does not know which.
@@ -724,27 +725,23 @@ def parse_ruleset(self, first_token, tokens):
724725
not for CSS 2.1 or another level.
725726
726727
"""
727-
selector_parts= []
728+
selector= []
728729
fortokeninchain([first_token], tokens):
729730
iftoken.type=='{':
730731
# Parse/validate once we’ve read the whole rule
731-
whileselector_partsandselector_parts[-1].type=='S':
732-
selector_parts.pop()
733-
ifnotselector_parts:
732+
whileselectorandselector[-1].type=='S':
733+
selector.pop()
734+
ifnotselector:
734735
raiseParseError(first_token, 'empty selector')
735-
forselector_tokeninselector_parts:
736+
forselector_tokeninselector:
736737
self.validate_any(selector_token, 'selector')
737-
start=selector_parts[0] ifselector_partselsetoken
738-
selector=ContainerToken(
739-
'SELECTOR', '', '', selector_parts,
740-
start.line, start.column)
741738
declarations, errors=self.parse_declaration_list(
742739
token.content)
743740
ruleset=RuleSet(selector, declarations,
744741
first_token.line, first_token.column)
745742
returnruleset, errors
746743
else:
747-
selector_parts.append(token)
744+
selector.append(token)
748745
raiseParseError(token, 'no declaration block found for ruleset')
749746

750747
defparse_declaration_list(self, tokens):
@@ -826,8 +823,6 @@ def parse_declaration(self, tokens):
826823
ifnotvalue:
827824
raiseParseError(token, 'expected a property value')
828825
value, priority=self.parse_value_priority(value)
829-
value=ContainerToken(
830-
'VALUES', '', '', value, value[0].line, value[0].column)
831826
returnDeclaration(
832827
property_name, value, priority, name_token.line, name_token.column)
833828

‎tinycss/selectors3.py‎

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -212,9 +212,9 @@ def parse_ruleset(self, first_token, tokens):
212212
first_token, tokens)
213213
try:
214214
ruleset.selector_list=_parse_selector_group_tokens(
215-
ruleset.selector.content)
215+
ruleset.selector)
216216
exceptInvalidSelectorErrorasexc:
217217
# Invalidate the whole ruleset even if some selectors
218218
# in the selector group are valid.
219-
raiseParseError(ruleset.selector, exc.args[0])
219+
raiseParseError(ruleset, exc.args[0])
220220
returnruleset, errors

‎tinycss/tests/test_css21.py‎

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -154,8 +154,8 @@ def parse_at_rule(self, rule, stylesheet_rules, errors, context):
154154
list(jsonify(rule.body.content))
155155
ifrule.bodyisnotNoneelseNone)
156156
ifrule.at_keywordelse
157-
(rule.selector.as_css, [
158-
(decl.name, list(jsonify(decl.value.content)))
157+
(''.join(s.as_cssforsinrule.selector), [
158+
(decl.name, list(jsonify(decl.value)))
159159
fordeclinrule.declarations])
160160
forruleinstylesheet.rules
161161
]
@@ -198,7 +198,7 @@ def parse_at_rule(self, rule, stylesheet_rules, errors, context):
198198
deftest_parse_style_attr(css_source, expected_declarations, expected_errors):
199199
declarations, errors=CSS21Parser().parse_style_attr(css_source)
200200
assert_errors(errors, expected_errors)
201-
result= [(decl.name, list(jsonify(decl.value.content)))
201+
result= [(decl.name, list(jsonify(decl.value)))
202202
fordeclindeclarations]
203203
assertresult==expected_declarations
204204

@@ -231,7 +231,7 @@ def test_parse_style_attr(css_source, expected_declarations, expected_errors):
231231
deftest_important(css_source, expected_declarations, expected_errors):
232232
declarations, errors=CSS21Parser().parse_style_attr(css_source)
233233
assert_errors(errors, expected_errors)
234-
result= [(decl.name, list(jsonify(decl.value.content)), decl.priority)
234+
result= [(decl.name, list(jsonify(decl.value)), decl.priority)
235235
fordeclindeclarations]
236236
assertresult==expected_declarations
237237

@@ -305,7 +305,7 @@ def test_at_page(css, expected_result, expected_errors):
305305
result= (
306306
rule.selector,
307307
rule.specificity,
308-
[(decl.name, list(jsonify(decl.value.content)))
308+
[(decl.name, list(jsonify(decl.value)))
309309
fordeclinrule.declarations],
310310
)
311311
assertresult==expected_result
@@ -337,8 +337,8 @@ def test_at_media(css_source, expected_rules, expected_errors):
337337
assertrule.at_keyword=='@media'
338338
result= [
339339
(rule.media, [
340-
(sub_rule.selector.as_css, [
341-
(decl.name, list(jsonify(decl.value.content)))
340+
(''.join(s.as_cssforsinsub_rule.selector), [
341+
(decl.name, list(jsonify(decl.value)))
342342
fordeclinsub_rule.declarations])
343343
forsub_ruleinrule.rules
344344
])

‎tinycss/tests/test_page3.py‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -88,7 +88,7 @@ def test_content(css, expected_declarations, expected_rules, expected_errors):
8888
assert_errors(stylesheet.errors, expected_errors)
8989

9090
defdeclarations(rule):
91-
return [(decl.name, list(jsonify(decl.value.content)))
91+
return [(decl.name, list(jsonify(decl.value)))
9292
fordeclinrule.declarations]
9393

9494
assertlen(stylesheet.rules) ==1

0 commit comments

Comments
(0)