use vize_l0::Span;
#[derive(Debug, Clone, Copy, PartialEq, Eq)]
pub enum DirectivePrefix {
Full,
Bind,
Prop,
On,
Slot,
}
#[derive(Debug, Clone, Copy, PartialEq, Eq)]
pub enum ArgSyntax {
Static(Span),
Dynamic(Span),
}
#[derive(Debug, Clone, Copy, PartialEq, Eq)]
pub struct DirectiveName {
pub prefix: DirectivePrefix,
pub name: Span,
pub arg: Option<ArgSyntax>,
pub modifiers: Span,
}
#[derive(Debug, Clone, Copy, PartialEq, Eq)]
pub enum DirectiveNameError {
OffsetOverflow,
NestingLimit,
}
pub trait DirectiveSyntax {
fn decompose(
&self,
name: &str,
offset: u32,
) -> Result<Option<DirectiveName>, DirectiveNameError>;
}
pub use crate::dialect::vue3::VueDirectives;