use core::fmt;
use core::ops::Deref;
use bstr::BStr;
use crate::yaml::data::Data;
use crate::yaml::raw;
pub struct String<'a> {
data: &'a Data,
raw: &'a raw::String,
}
impl<'a> String<'a> {
pub(super) fn new(data: &'a Data, raw: &'a raw::String) -> Self {
Self { data, raw }
}
#[inline]
#[must_use]
pub fn as_raw(&self) -> &BStr {
self.data.str(self.raw.original)
}
}
impl Deref for String<'_> {
type Target = BStr;
#[inline]
fn deref(&self) -> &Self::Target {
self.data.str(self.raw.id)
}
}
impl fmt::Debug for String<'_> {
#[inline]
fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
self.data.str(self.raw.id).fmt(f)
}
}