php_parser_rs/parser/ast/
attributes.rs1use std::slice::Iter;
2
3use schemars::JsonSchema;
4use serde::Deserialize;
5use serde::Serialize;
6
7use crate::lexer::token::Span;
8use crate::parser::ast::arguments::ArgumentList;
9use crate::parser::ast::identifiers::SimpleIdentifier;
10
11#[derive(Debug, PartialEq, Eq, Clone, Deserialize, Serialize, JsonSchema)]
12
13pub struct Attribute {
14 pub start: Span,
15 pub end: Span,
16 pub name: SimpleIdentifier,
17 pub arguments: Option<ArgumentList>,
18}
19
20#[derive(Debug, PartialEq, Eq, Clone, Deserialize, Serialize, JsonSchema)]
21
22pub struct AttributeGroup {
23 pub start: Span,
24 pub end: Span,
25 pub members: Vec<Attribute>,
26}
27
28impl AttributeGroup {
29 pub fn iter(&self) -> Iter<'_, Attribute> {
30 self.members.iter()
31 }
32}
33
34impl IntoIterator for AttributeGroup {
35 type Item = Attribute;
36 type IntoIter = std::vec::IntoIter<Self::Item>;
37
38 fn into_iter(self) -> Self::IntoIter {
39 self.members.into_iter()
40 }
41}