Automatically appending the html escape filter on the renderer side.
This commit is contained in:
parent
6a9fe9e1be
commit
624c83b680
@ -1,4 +1,9 @@
|
|||||||
Special characters: {special_characters}{~n}
|
Special characters: {special_characters}{~n}
|
||||||
|
Special characters html escaping disabled: {special_characters|s}{~n}
|
||||||
|
Special characters html escaping disabled and enabled: {special_characters|s|h}{~n}
|
||||||
|
Special characters html escaping enabled and disabled: {special_characters|h|s}{~n}
|
||||||
|
Special characters html escaped twice: {special_characters|h|h}{~n}
|
||||||
|
|
||||||
|
|
||||||
Object string parsed: {string|jp}{~n}
|
Object string parsed: {string|jp}{~n}
|
||||||
Object string parsed and stringified: {string|jp|js}{~n}
|
Object string parsed and stringified: {string|jp|js}{~n}
|
||||||
@ -13,3 +18,4 @@ Object html escaped: {object|h}{~n}
|
|||||||
Object html escaping disabled: {object|s}{~n}
|
Object html escaping disabled: {object|s}{~n}
|
||||||
Object stringified: {object|js}{~n}
|
Object stringified: {object|js}{~n}
|
||||||
Object stringified and parsed: {object|js|jp}{~n}
|
Object stringified and parsed: {object|js|jp}{~n}
|
||||||
|
Object stringified, html escaping disabled, parsed, stringified, and html escaped: {object|js|s|jp|js|h}{~n}
|
||||||
|
@ -6,7 +6,7 @@ use crate::parser::PartialNameElement;
|
|||||||
use crate::parser::RValue;
|
use crate::parser::RValue;
|
||||||
use crate::parser::Special;
|
use crate::parser::Special;
|
||||||
use crate::parser::Template;
|
use crate::parser::Template;
|
||||||
use crate::parser::TemplateElement;
|
use crate::parser::{Filter, TemplateElement};
|
||||||
use crate::renderer::context_element::ContextElement;
|
use crate::renderer::context_element::ContextElement;
|
||||||
use crate::renderer::errors::CompileError;
|
use crate::renderer::errors::CompileError;
|
||||||
use crate::renderer::errors::RenderError;
|
use crate::renderer::errors::RenderError;
|
||||||
@ -15,7 +15,7 @@ use crate::renderer::inline_partial_tree::extract_inline_partials;
|
|||||||
use crate::renderer::inline_partial_tree::InlinePartialTreeElement;
|
use crate::renderer::inline_partial_tree::InlinePartialTreeElement;
|
||||||
use crate::renderer::parameters_context::ParametersContext;
|
use crate::renderer::parameters_context::ParametersContext;
|
||||||
use crate::renderer::walking::walk_path;
|
use crate::renderer::walking::walk_path;
|
||||||
use std::{cmp::Ordering, collections::HashMap};
|
use std::collections::HashMap;
|
||||||
|
|
||||||
#[derive(Clone, Debug)]
|
#[derive(Clone, Debug)]
|
||||||
pub struct CompiledTemplate<'a> {
|
pub struct CompiledTemplate<'a> {
|
||||||
@ -153,7 +153,7 @@ impl<'a> DustRenderer<'a> {
|
|||||||
if loop_elements.is_empty() {
|
if loop_elements.is_empty() {
|
||||||
return Ok("".to_owned());
|
return Ok("".to_owned());
|
||||||
} else {
|
} else {
|
||||||
return final_val.render(&reference.filters);
|
return final_val.render(&Self::preprocess_filters(&reference.filters));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -500,6 +500,24 @@ impl<'a> DustRenderer<'a> {
|
|||||||
},
|
},
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fn preprocess_filters(filters: &Vec<Filter>) -> Vec<Filter> {
|
||||||
|
let mut final_filters: Vec<Filter> = filters
|
||||||
|
.into_iter()
|
||||||
|
.filter(|f| f != &&Filter::DisableHtmlEncode)
|
||||||
|
.map(|f| f.clone())
|
||||||
|
.collect();
|
||||||
|
|
||||||
|
// If the user has not specified any escaping filter (|s or
|
||||||
|
// |h), automatically add an html escape filter
|
||||||
|
if !filters
|
||||||
|
.iter()
|
||||||
|
.any(|f| f == &Filter::DisableHtmlEncode || f == &Filter::HtmlEncode)
|
||||||
|
{
|
||||||
|
final_filters.push(Filter::HtmlEncode);
|
||||||
|
}
|
||||||
|
final_filters
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
#[cfg(test)]
|
#[cfg(test)]
|
||||||
|
Loading…
x
Reference in New Issue
Block a user