diff --git a/python/markupever/dom.py b/python/markupever/dom.py index 3bd3963..4c062f2 100644 --- a/python/markupever/dom.py +++ b/python/markupever/dom.py @@ -778,6 +778,10 @@ def clear(self) -> None: """Clears the attributes list, removing all values.""" self.__raw.clear() + def items(self) -> typing.Iterator[(QualName, str)]: + """Returns a generator of attribute key-value pairs.""" + return self.__raw.items() + def keys(self) -> typing.Generator[QualName, None, None]: """Returns a generator of attribute keys.""" return (i for i, _ in self.__raw.items()) diff --git a/src/nodes.rs b/src/nodes.rs index 2820f71..4ed038c 100644 --- a/src/nodes.rs +++ b/src/nodes.rs @@ -742,13 +742,13 @@ impl PyAttrsListItems { } fn repr_attrlist(element: &::treedom::interface::ElementInterface) -> String { - let mut writer = String::from("["); + let mut writer = String::from("AttrsList({"); let mut iter_ = element.attrs.iter(); if let Some((key, val)) = iter_.next() { writer += &format!( - "({}, {:?})", + "{}: {:?}", super::qualname::repr_qualname(key), val.as_ref() ); @@ -756,13 +756,13 @@ fn repr_attrlist(element: &::treedom::interface::ElementInterface) -> String { for (key, val) in iter_ { writer += &format!( - ", ({}, {:?})", + ", {}: {:?}", super::qualname::repr_qualname(key), val.as_ref() ); } - writer + "]" + writer + "})" } /// This type is design for communicating with element attributes.