prefix support DRY

This commit is contained in:
Astro 2019-01-13 21:05:19 +01:00
commit 1225bf7027

View file

@ -14,6 +14,7 @@ use std::io;
use std::iter::FromIterator;
use std::rc::Rc;
use std::str::from_utf8;
use std::borrow::Cow;
use tokio_codec::{Decoder, Encoder};
use xml5ever::interface::Attribute;
use xml5ever::tokenizer::{Tag, TagKind, Token, TokenSink, XmlTokenizer};
@ -104,11 +105,12 @@ impl ParserSink {
"xmlns" => (),
_ if is_prefix_xmlns(attr) => (),
_ => {
if let Some(ref prefix) = attr.name.prefix {
el_builder = el_builder.attr(format!("{}:{}", prefix, attr.name.local), attr.value.as_ref());
let attr_name = if let Some(ref prefix) = attr.name.prefix {
Cow::Owned(format!("{}:{}", prefix, attr.name.local))
} else {
el_builder = el_builder.attr(attr.name.local.as_ref(), attr.value.as_ref());
}
Cow::Borrowed(attr.name.local.as_ref())
};
el_builder = el_builder.attr(attr_name, attr.value.as_ref());
}
}
}