mxmlextrema_as3parser/tree/
qualified_identifier.rs1use crate::ns::*;
2use serde::{Serialize, Deserialize};
3
4#[derive(Debug, Clone, Serialize, Deserialize)]
5pub struct QualifiedIdentifier {
6 pub location: Location,
7 pub attribute: bool,
8 pub qualifier: Option<Rc<Expression>>,
9 pub id: QualifiedIdentifierIdentifier,
10}
11
12#[derive(Debug, Clone, Serialize, Deserialize)]
13pub enum QualifiedIdentifierIdentifier {
14 Id((String, Location)),
15 Brackets(Rc<Expression>),
16}
17
18impl QualifiedIdentifier {
19 pub fn to_identifier_name_or_asterisk(&self) -> Option<(String, Location)> {
20 if self.attribute || self.qualifier.is_some() {
21 None
22 } else {
23 if let QualifiedIdentifierIdentifier::Id(id) = &self.id {
24 Some(id.clone())
25 } else {
26 None
27 }
28 }
29 }
30
31 pub fn to_identifier_name(&self) -> Option<(String, Location)> {
32 if self.attribute || self.qualifier.is_some() {
33 None
34 } else {
35 if let QualifiedIdentifierIdentifier::Id(id) = &self.id {
36 if id.0 == "*" { None } else { Some(id.clone()) }
37 } else {
38 None
39 }
40 }
41 }
42
43 pub fn is_identifier_token(&self) -> bool {
44 self.qualifier.is_none() && !self.attribute && match &self.id {
45 QualifiedIdentifierIdentifier::Id((id, _)) => id != "*",
46 _ => false,
47 }
48 }
49}