delay: Simplify parsing and add more checks.

This commit is contained in:
Emmanuel Gil Peyrot 2017-10-31 22:27:13 +00:00
parent 7950fe8f52
commit 35258482ba

View file

@ -25,21 +25,16 @@ impl TryFrom<Element> for Delay {
type Err = Error;
fn try_from(elem: Element) -> Result<Delay, Error> {
if !elem.is("delay", ns::DELAY) {
return Err(Error::ParseError("This is not a delay element."));
}
for _ in elem.children() {
return Err(Error::ParseError("Unknown child in delay element."));
}
let from = get_attr!(elem, "from", optional);
let stamp = get_attr!(elem, "stamp", required);
check_self!(elem, "delay", ns::DELAY);
check_no_children!(elem, "delay");
check_no_unknown_attributes!(elem, "delay", ["from", "stamp"]);
let data = match elem.text().as_ref() {
"" => None,
text => Some(text.to_owned()),
};
Ok(Delay {
from: from,
stamp: stamp,
from: get_attr!(elem, "from", optional),
stamp: get_attr!(elem, "stamp", required),
data: data,
})
}