citum_engine/values/
term.rs1use crate::reference::Reference;
12use crate::values::{ComponentValues, ProcHints, ProcValues, RenderOptions};
13use citum_schema::locale::TermForm;
14use citum_schema::template::TemplateTerm;
15
16impl ComponentValues for TemplateTerm {
17 fn values<F: crate::render::format::OutputFormat<Output = String>>(
18 &self,
19 _reference: &Reference,
20 _hints: &ProcHints,
21 options: &RenderOptions<'_>,
22 ) -> Option<ProcValues<F::Output>> {
23 let effective_rendering = self.rendering.clone();
24
25 let form = self.form.clone().unwrap_or(TermForm::Long);
26 let mut value = options
27 .locale
28 .resolved_general_term(&self.term, &form, self.gender.clone())
29 .unwrap_or_default();
30
31 if crate::values::should_strip_periods(&effective_rendering, options) {
33 value = crate::values::strip_trailing_periods(&value);
34 }
35
36 if let Some(tc) = effective_rendering.text_case {
38 value = crate::values::text_case::apply_text_case(&value, tc);
39 }
40
41 if value.is_empty() {
42 None
43 } else {
44 Some(ProcValues {
45 value,
46 pre_formatted: false,
47 ..Default::default()
48 })
49 }
50 }
51}