use rowan::TextRange;
use super::AstToken;
use crate::syntax::{SyntaxKind, SyntaxToken};
#[derive(Debug, Clone, PartialEq, Eq, Hash)]
pub struct ControlWord {
syntax: SyntaxToken,
}
impl AstToken for ControlWord {
fn can_cast(kind: SyntaxKind) -> bool {
kind == SyntaxKind::CONTROL_WORD
}
fn cast(syntax: SyntaxToken) -> Option<Self> {
Self::can_cast(syntax.kind()).then_some(Self { syntax })
}
fn syntax(&self) -> &SyntaxToken {
&self.syntax
}
}
impl ControlWord {
pub fn name(&self) -> String {
self.syntax.text().trim_start_matches('\\').to_string()
}
pub fn range(&self) -> TextRange {
self.syntax.text_range()
}
}