minijinja/vm/
module_object.rs1use std::fmt;
2use std::sync::Arc;
3
4use crate::value::{Enumerator, Object, Value, ValueMap};
5
6#[derive(Debug, Default)]
8pub(crate) struct Module {
9 values: ValueMap,
10 captured: Value,
11}
12
13impl Module {
14 pub fn new(values: ValueMap, captured: Value) -> Self {
15 Self { values, captured }
16 }
17}
18
19impl Object for Module {
20 fn get_value(self: &Arc<Self>, key: &Value) -> Option<Value> {
21 self.values.get(key).cloned()
22 }
23
24 fn enumerate(self: &Arc<Self>) -> Enumerator {
25 let keys = self.values.keys().cloned();
26 Enumerator::Values(keys.collect())
27 }
28
29 fn render(self: &Arc<Self>, f: &mut fmt::Formatter<'_>) -> fmt::Result {
30 write!(f, "{}", self.captured)
31 }
32}