diff --git a/src/jinjax/html_attrs.py b/src/jinjax/html_attrs.py index 3162cef..3017b32 100644 --- a/src/jinjax/html_attrs.py +++ b/src/jinjax/html_attrs.py @@ -55,7 +55,7 @@ def __init__(self, attrs) -> None: name = name.replace("_", "-") if value is True: properties.add(name) - elif value not in (False, None): + elif value is not False and value is not None: attributes[name] = LazyString(value) self.__attributes = attributes @@ -98,7 +98,7 @@ def set(self, **kw) -> None: """ for name, value in kw.items(): name = name.replace("_", "-") - if value in (False, None): + if value is False or value is None: self._remove(name) continue diff --git a/tests/test_html_attrs.py b/tests/test_html_attrs.py index df03faa..bc1a68f 100644 --- a/tests/test_html_attrs.py +++ b/tests/test_html_attrs.py @@ -11,6 +11,8 @@ def test_parse_initial_attrs(): "class": "z4 c3 a1 z4 b2", "open": True, "disabled": False, + "value": 0, + "foobar": None, } ) assert attrs.classes == "a1 b2 c3 z4" @@ -20,7 +22,16 @@ def test_parse_initial_attrs(): assert attrs.get("title") == "hi" assert attrs.get("open") is True assert attrs.get("disabled", "meh") == "meh" + assert attrs.get("value") == "0" + assert attrs.get("disabled") is None + assert attrs.get("foobar") is None + + attrs.set(data_value=0) + attrs.set(data_position=False) + assert attrs.get("data-value") == 0 + assert attrs.get("data-position") is None + assert attrs.get("data_position") is None def test_getattr(): attrs = HTMLAttrs(