chore: Cleanup multiname creation in XML

This commit is contained in:
EmperorBale 2023-03-03 01:50:15 -08:00 committed by Bale
parent f95599b816
commit ac9106ccb4
2 changed files with 11 additions and 15 deletions

View File

@ -4,7 +4,7 @@ use crate::avm2::e4x::{E4XNode, E4XNodeKind};
pub use crate::avm2::object::xml_allocator;
use crate::avm2::object::{E4XOrXml, QNameObject, TObject, XmlListObject};
use crate::avm2::string::AvmString;
use crate::avm2::{Activation, Error, Object, QName, Value};
use crate::avm2::{Activation, Error, Multiname, Object, Value};
use crate::avm2_stub_method;
pub fn init<'gc>(
@ -53,7 +53,7 @@ pub fn name<'gc>(
avm2_stub_method!(activation, "XML", "name", "namespaces");
// FIXME - use namespace
let namespace = activation.avm2().public_namespace;
Ok(QNameObject::from_name(activation, QName::new(namespace, local_name))?.into())
Ok(QNameObject::from_name(activation, Multiname::new(namespace, local_name))?.into())
} else {
Ok(Value::Null)
}
@ -128,23 +128,21 @@ pub fn attribute<'gc>(
let xml = this.as_xml_object().unwrap();
let name = args[0];
let multiname = match name {
Value::String(s) => QName::new(activation.avm2().public_namespace, s).into(),
Value::String(s) => Multiname::new(activation.avm2().public_namespace, s),
Value::Object(o) => {
if let Some(qname) = o.as_qname_object() {
qname.name().clone()
} else {
QName::new(
Multiname::new(
activation.avm2().public_namespace,
name.coerce_to_string(activation)?,
)
.into()
}
}
_ => QName::new(
_ => Multiname::new(
activation.avm2().public_namespace,
name.coerce_to_string(activation)?,
)
.into(),
),
};
let attribute = if let E4XNodeKind::Element { attributes, .. } = &*xml.node().kind() {

View File

@ -5,7 +5,7 @@ use crate::{
avm2::{
e4x::{simple_content_to_string, E4XNode, E4XNodeKind},
object::{E4XOrXml, XmlListObject},
Activation, Error, Object, QName, TObject, Value,
Activation, Error, Multiname, Object, TObject, Value,
},
avm2_stub_method,
};
@ -106,23 +106,21 @@ pub fn attribute<'gc>(
let name = args[0];
let multiname = match name {
Value::String(s) => QName::new(activation.avm2().public_namespace, s).into(),
Value::String(s) => Multiname::new(activation.avm2().public_namespace, s),
Value::Object(o) => {
if let Some(qname) = o.as_qname_object() {
qname.name().clone()
} else {
QName::new(
Multiname::new(
activation.avm2().public_namespace,
name.coerce_to_string(activation)?,
)
.into()
}
}
_ => QName::new(
_ => Multiname::new(
activation.avm2().public_namespace,
name.coerce_to_string(activation)?,
)
.into(),
),
};
let children = list.children();