use super::*;
#[cfg(feature = "pretty-print")]
mod display;
#[derive(Clone, Debug, PartialEq, Eq, Hash)]
#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
pub struct StringTextNode {
pub text: String,
pub span: Range<u32>,
}
#[derive(Clone, Debug, PartialEq, Eq, Hash)]
#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
pub struct StringLiteralNode {
pub raw: String,
pub unit: Option<IdentifierNode>,
pub span: Range<u32>,
}
impl StringLiteralNode {
pub fn new<S: ToString>(value: S, start: u32, end: u32) -> Self {
Self { raw: value.to_string(), unit: None, span: start..end }
}
pub fn as_raw(&self) -> StringTextNode {
StringTextNode { text: self.raw.clone(), span: self.span.clone() }
}
pub fn as_escaped(&self) -> String {
self.to_string()
}
pub fn with_unit(mut self, unit: IdentifierNode) -> Self {
self.unit = Some(unit);
self
}
}