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