mxmlextrema_as3parser/tree/
xml_expression.rs1use crate::ns::*;
2use serde::{Serialize, Deserialize};
3
4#[derive(Debug, Clone, Serialize, Deserialize)]
5pub struct XmlExpression {
6 pub location: Location,
7 pub element: Rc<XmlElement>,
8}
9
10#[derive(Debug, Clone, Serialize, Deserialize)]
11pub struct XmlMarkupExpression {
12 pub location: Location,
13 pub markup: String,
14}
15
16#[derive(Debug, Clone, Serialize, Deserialize)]
17pub struct XmlListExpression {
18 pub location: Location,
19 pub content: Vec<Rc<XmlContent>>,
20}
21
22#[derive(Debug, Clone, Serialize, Deserialize)]
23pub struct XmlElement {
24 pub location: Location,
25 pub name: XmlTagName,
26 pub attributes: Vec<Rc<XmlAttribute>>,
27 pub attribute_expression: Option<Rc<Expression>>,
28 pub content: Option<Vec<Rc<XmlContent>>>,
29 pub closing_name: Option<XmlTagName>,
30}
31
32#[derive(Debug, Clone, Serialize, Deserialize)]
33pub enum XmlTagName {
34 Name((String, Location)),
35 Expression(Rc<Expression>),
36}
37
38#[derive(Debug, Clone, Serialize, Deserialize)]
39pub struct XmlAttribute {
40 pub location: Location,
41 pub name: (String, Location),
42 pub value: XmlAttributeValue,
43}
44
45#[derive(Debug, Clone, Serialize, Deserialize)]
46pub enum XmlAttributeValue {
47 Value((String, Location)),
48 Expression(Rc<Expression>),
49}
50
51#[derive(Debug, Clone, Serialize, Deserialize)]
52pub enum XmlContent {
53 Characters((String, Location)),
54 Markup((String, Location)),
55 Element(Rc<XmlElement>),
56 Expression(Rc<Expression>),
57}