vector/template/
confined.rs1use super::*;
2
3impl fmt::Debug for ConfinedTemplate {
4 fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
5 f.debug_struct("ConfinedTemplate")
6 .field("inner", &self.inner)
7 .field("confinement", &self.checker.as_ref().map(|_| "<fn>"))
8 .finish()
9 }
10}
11
12impl fmt::Display for ConfinedTemplate {
13 fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
14 self.inner.fmt(f)
15 }
16}
17
18impl ConfinedTemplate {
19 pub const fn with_tz_offset(mut self, tz_offset: Option<FixedOffset>) -> Self {
21 self.inner.tz_offset = tz_offset;
22 self
23 }
24
25 pub fn check_confinement(&self, rendered: &str) -> Result<(), TemplateRenderingError> {
30 if let Some(checker) = &self.checker {
31 checker
32 .confine(rendered)
33 .map_err(|e| TemplateRenderingError::Confined {
34 rendered_preview: confined_preview(rendered),
35 rendered_len: rendered.len(),
36 message: e.to_string(),
37 })?;
38 }
39 Ok(())
40 }
41
42 pub fn render<'a>(
47 &self,
48 event: impl Into<EventRef<'a>>,
49 ) -> Result<Bytes, TemplateRenderingError> {
50 self.render_string(event.into()).map(Into::into)
51 }
52
53 pub fn render_string<'a>(
58 &self,
59 event: impl Into<EventRef<'a>>,
60 ) -> Result<String, TemplateRenderingError> {
61 let rendered = self.inner.render_string(event)?;
62 self.check_confinement(&rendered)?;
63 Ok(rendered)
64 }
65
66 pub fn get_fields(&self) -> Option<Vec<String>> {
70 self.inner.get_fields()
71 }
72}