From 71378ed37defab163fc7f28fb04903b335038b8c Mon Sep 17 00:00:00 2001 From: Tom Alexander Date: Sat, 23 May 2020 19:34:38 -0400 Subject: [PATCH] Fix a bug w.r.t. quoting and escaping boolean values with filters. --- js/test_cases/filters/README.md | 5 +++++ src/bin.rs | 3 +++ src/renderer/renderer.rs | 1 + 3 files changed, 9 insertions(+) diff --git a/js/test_cases/filters/README.md b/js/test_cases/filters/README.md index 028a871..d7bdc6e 100644 --- a/js/test_cases/filters/README.md +++ b/js/test_cases/filters/README.md @@ -6,3 +6,8 @@ Dust automatically applies the `|h` filter to html escape unless `|s` is applied Iterate over all filters If `|s` is not present append `|h`, otherwise, leave filters as-in During render, `|s` does nothing, so we can just remove it on the dust side to prevent confusion. + +Quoting +------- + +Oddly enough, `boolean|j|js` gets no quotes (meaning `boolean|j` remains a boolean) but `boolean|h|js` does get quotes (meaning that `boolean|h` becomes a string) diff --git a/src/bin.rs b/src/bin.rs index caf5ffd..629f87f 100644 --- a/src/bin.rs +++ b/src/bin.rs @@ -189,6 +189,9 @@ fn apply_filter( (serde_json::Value::String(string), Filter::JavascriptStringEncode) => { Ok(serde_json::Value::String(javascript_escape(string))) } + (serde_json::Value::Bool(boolean), Filter::JavascriptStringEncode) => { + Ok(serde_json::Value::Bool(*boolean)) + } (_, Filter::JavascriptStringEncode) => Ok(serde_json::Value::String(javascript_escape( &json_value.render(&Vec::new())?, ))), diff --git a/src/renderer/renderer.rs b/src/renderer/renderer.rs index eab630e..7cf4e99 100644 --- a/src/renderer/renderer.rs +++ b/src/renderer/renderer.rs @@ -525,6 +525,7 @@ mod tests { use crate::renderer::context_element::Renderable; use crate::renderer::context_element::Walkable; use crate::renderer::CompareContextElement; + use std::cmp::Ordering; impl ContextElement for String {}