use std::sync::OnceLock;
use crate::context::ITemplateContext;
use crate::expression::StandardExpressionResult;
use crate::model::{ICDATASection, IComment, IText};
use crate::util::{CharSequenceValue, Utf16String};
use crate::{IEngineConfiguration, TemplateMode};
use super::{AbstractStandardInliner, IInliner, StandardInlinerEscaping};
pub struct StandardTextInliner(AbstractStandardInliner);
impl StandardTextInliner {
#[must_use]
pub fn new(configuration: &dyn IEngineConfiguration) -> Self {
Self(AbstractStandardInliner::new(
configuration,
TemplateMode::TEXT,
StandardInlinerEscaping::Html,
))
}
}
impl IInliner for StandardTextInliner {
fn get_name(&self) -> &Utf16String {
static NAME: OnceLock<Utf16String> = OnceLock::new();
NAME.get_or_init(|| Utf16String::from_rust_str("StandardTextInliner"))
}
fn inline_text(
&self,
context: &dyn ITemplateContext,
text: &dyn IText,
) -> StandardExpressionResult<Option<Box<dyn CharSequenceValue>>> {
self.0.inline_text(context, text)
}
fn inline_cdata_section(
&self,
context: &dyn ITemplateContext,
value: &dyn ICDATASection,
) -> StandardExpressionResult<Option<Box<dyn CharSequenceValue>>> {
self.0.inline_cdata_section(context, value)
}
fn inline_comment(
&self,
context: &dyn ITemplateContext,
value: &dyn IComment,
) -> StandardExpressionResult<Option<Box<dyn CharSequenceValue>>> {
self.0.inline_comment(context, value)
}
}