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