use crate::Span;
#[cfg(feature = "serde")]
use serde::Serialize;
#[derive(Debug, Clone)]
#[cfg_attr(feature = "serde", derive(Serialize))]
pub struct InlineTag {
pub name: String,
pub body: Option<String>,
pub span: Span,
}
#[derive(Debug, Clone)]
#[cfg_attr(feature = "serde", derive(Serialize))]
#[non_exhaustive]
pub enum TextSegment {
Text(String),
InlineTag(InlineTag),
}
#[derive(Debug, Clone)]
#[cfg_attr(feature = "serde", derive(Serialize))]
pub struct PhpDocText {
pub segments: Vec<TextSegment>,
pub span: Span,
}
#[derive(Debug, Clone)]
#[cfg_attr(feature = "serde", derive(Serialize))]
pub struct PhpDocTag {
pub name: String,
pub body: Option<PhpDocText>,
pub span: Span,
}
#[derive(Debug, Clone)]
#[cfg_attr(feature = "serde", derive(Serialize))]
pub struct PhpDoc {
pub summary: Option<PhpDocText>,
pub description: Option<PhpDocText>,
pub tags: Vec<PhpDocTag>,
pub span: Span,
}