use super::*;
#[derive(Clone, Debug, Eq, PartialEq, Hash)]
#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
pub struct IdentifierNode {
pub name: String,
pub span: Range<u32>,
}
#[derive(Clone, Debug, Eq, PartialEq, Hash)]
#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
pub struct TextNode {
pub text: String,
pub span: Range<u32>,
}
#[derive(Clone, Debug, Eq, PartialEq, Hash)]
#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
pub struct EscapeNode {
pub escape: char,
pub span: Range<u32>,
}
#[derive(Clone, Debug, Eq, PartialEq, Hash)]
#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
pub struct LigatureNode {
pub name: String,
pub span: Range<u32>,
}
#[derive(Clone, Debug, Eq, PartialEq, Hash)]
#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
pub struct AlignNode {
pub span: Range<u32>,
}
#[derive(Clone, Debug, Eq, PartialEq, Hash)]
#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
pub struct NumberLiteralNode {
pub value: String,
pub span: Range<u32>,
}
#[derive(Clone, Debug, Eq, PartialEq, Hash)]
#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
pub struct NumberValueNode {
pub value: String,
pub unit: Option<IdentifierNode>,
pub span: Range<u32>,
}
impl TextNode {
pub fn new<S: ToString>(body: S, span: Range<u32>) -> Self {
Self { text: body.to_string(), span }
}
}
impl IdentifierNode {
pub fn new<S: ToString>(body: S, span: Range<u32>) -> Self {
Self { name: body.to_string(), span }
}
}
impl LigatureNode {
pub fn new<S: ToString>(body: S, span: Range<u32>) -> Self {
Self { name: body.to_string(), span }
}
}
impl NumberLiteralNode {
pub fn new<S: ToString>(body: S, span: Range<u32>) -> Self {
Self { value: body.to_string(), span }
}
}