weaver_lib/filters/
json.rs1use liquid::Error;
2use liquid_core::{Display_filter, Filter, FilterReflection, ParseFilter};
3use liquid_core::{Result, Runtime};
4use liquid_core::{Value, ValueView};
5
6#[derive(Clone, ParseFilter, FilterReflection)]
7#[filter(
8 name = "json",
9 description = "Output the raw input unescaped.",
10 parsed(JSONFilter)
11)]
12pub struct JSON;
13
14#[derive(Debug, Default, Display_filter)]
15#[name = "json"]
16struct JSONFilter;
17
18impl Filter for JSONFilter {
19 fn evaluate(&self, input: &dyn ValueView, _runtime: &dyn Runtime) -> Result<Value> {
20 let serde_value = input.to_value();
21
22 let json_string = serde_json::to_string_pretty(&serde_value)
24 .map_err(|e| Error::with_msg(format!("Failed to serialize to JSON: {}", e)))?;
25
26 println!("JSON DUMP: {}", &json_string);
27
28 Ok(Value::scalar(json_string))
30 }
31}