Skip to content

Commit bc9104d

Browse files
authored
Merge pull request #263 from facelessuser/bugfix/attr
More correct attribute flag syntax
2 parents a12ac1d + 06538c5 commit bc9104d

File tree

4 files changed

+23
-2
lines changed

4 files changed

+23
-2
lines changed

docs/src/markdown/about/changelog.md

+4
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,9 @@
11
# Changelog
22

3+
## 2.4.1
4+
5+
- **FIX**: Attribute syntax for case insensitive flag optionally allows a space, it does not require one.
6+
37
## 2.4
48

59
- **NEW**: Update to support changes related to `:lang()` in the official CSS spec. `:lang("")` should match unspecified

soupsieve/__meta__.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -193,5 +193,5 @@ def parse_version(ver: str) -> Version:
193193
return Version(major, minor, micro, release, pre, post, dev)
194194

195195

196-
__version_info__ = Version(2, 4, 0, "final")
196+
__version_info__ = Version(2, 4, 1, "final")
197197
__version__ = __version_info__._get_canonical()

soupsieve/css_parser.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -113,7 +113,7 @@
113113
'''.format(nl=NEWLINE, ident=IDENTIFIER)
114114
# Attribute value comparison. `!=` is handled special as it is non-standard.
115115
ATTR = r'''
116-
(?:{ws}*(?P<cmp>[!~^|*$]?=){ws}*(?P<value>{value})(?:{ws}+(?P<case>[is]))?)?{ws}*\]
116+
(?:{ws}*(?P<cmp>[!~^|*$]?=){ws}*(?P<value>{value})(?:{ws}*(?P<case>[is]))?)?{ws}*\]
117117
'''.format(ws=WSC, value=VALUE)
118118

119119
# Selector patterns

tests/test_level4/test_attribute.py

+17
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,23 @@ def test_attribute_forced_case_insensitive(self):
3636
flags=util.HTML
3737
)
3838

39+
def test_attribute_case_insensitive_flag_spacing(self):
40+
"""Test attribute value case insensitivity spacing."""
41+
42+
self.assert_selector(
43+
self.MARKUP,
44+
"[class*=WORDSi]",
45+
[],
46+
flags=util.HTML
47+
)
48+
49+
self.assert_selector(
50+
self.MARKUP,
51+
"[class*='WORDS'i]",
52+
["0", "3", "pre"],
53+
flags=util.HTML
54+
)
55+
3956
def test_attribute_forced_case_insensitive_xml(self):
4057
"""Test that attribute value case insensitivity can be forced in XML."""
4158

0 commit comments

Comments
 (0)