use liquid::Error;
use liquid_core::{Display_filter, Filter, FilterReflection, ParseFilter};
use liquid_core::{Result, Runtime};
use liquid_core::{Value, ValueView};
#[derive(Clone, ParseFilter, FilterReflection)]
#[filter(
name = "raw",
description = "Output the raw input unescaped.",
parsed(RawHtmlFilter)
)]
pub struct RawHtml;
#[derive(Debug, Default, Display_filter)]
#[name = "raw"]
struct RawHtmlFilter;
impl Filter for RawHtmlFilter {
fn evaluate(&self, input: &dyn ValueView, _runtime: &dyn Runtime) -> Result<Value> {
let scalar_input = input.as_scalar().ok_or_else(|| {
Error::with_msg("RawHtml filter expects a scalar (string, number, etc.) input.")
})?;
let raw_string = scalar_input.into_owned();
Ok(Value::scalar(raw_string)) }
}