mxmlextrema_as3parser/tree/
xml_expression.rs

1use 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}