liquid-json 0.6.1

A Liquid template engine for JSON
Documentation
use liquid_core::Result;
use liquid_core::Runtime;
use liquid_core::{Display_filter, Filter, FilterReflection, ParseFilter};
use liquid_core::{Value, ValueView};

#[derive(Clone, ParseFilter, FilterReflection)]
#[filter(
    name = "output",
    description = "Marks a value as the output of the template.",
    parsed(OutputFilter)
)]
pub(crate) struct Output;

#[derive(Default, Display_filter)]
#[name = "output"]
struct OutputFilter;

impl std::fmt::Debug for OutputFilter {
    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
        f.debug_struct("OutputFilter").finish()
    }
}

impl Filter for OutputFilter {
    fn evaluate(&self, input: &dyn ValueView, runtime: &dyn Runtime) -> Result<Value> {
        let input = input.to_value();

        runtime.set_global("__output__".into(), input);

        Ok(Value::Nil)
    }
}