summaryrefslogtreecommitdiff
path: root/src/codegen.rs
diff options
context:
space:
mode:
authorDaniel Silverstone <dsilvers@digital-scurf.org>2020-12-05 11:33:09 +0000
committerDaniel Silverstone <dsilvers@digital-scurf.org>2020-12-10 09:57:05 +0000
commitcded5bf666846309fa745ca761940df0042bb5b4 (patch)
tree56f9b059b010f5fefed03f82b20f1836a4ac90ec /src/codegen.rs
parent8da8a9693b2f6404a174d000840bf40c5826abdb (diff)
downloadsubplot-cded5bf666846309fa745ca761940df0042bb5b4.tar.gz
codegen: Add commentsafe filter
Signed-off-by: Daniel Silverstone <dsilvers@digital-scurf.org>
Diffstat (limited to 'src/codegen.rs')
-rw-r--r--src/codegen.rs19
1 files changed, 19 insertions, 0 deletions
diff --git a/src/codegen.rs b/src/codegen.rs
index f798b25..f18fcc0 100644
--- a/src/codegen.rs
+++ b/src/codegen.rs
@@ -65,6 +65,7 @@ fn tera(tmplspec: &TemplateSpec) -> Result<Tera> {
let mut tera = Tera::new(&"*notexist").expect("new");
tera.register_filter("base64", base64);
tera.register_filter("nameslug", nameslug);
+ tera.register_filter("commentsafe", commentsafe);
tera.add_template_file(tmplspec.template_filename(), Some("template"))?;
Ok(tera)
}
@@ -110,6 +111,24 @@ fn nameslug(name: &Value, _: &HashMap<String, Value>) -> tera::Result<Value> {
}
}
+fn commentsafe(s: &Value, _: &HashMap<String, Value>) -> tera::Result<Value> {
+ match s {
+ Value::String(s) => {
+ let cleaned = s
+ .chars()
+ .map(|c| match c {
+ '\n' | '\r' => ' ',
+ _ => c,
+ })
+ .collect();
+ Ok(Value::String(cleaned))
+ }
+ _ => Err(tera::Error::msg(
+ "can only make clean comments from strings".to_string(),
+ )),
+ }
+}
+
#[derive(Debug, Serialize)]
pub struct Func {
pub source: PathBuf,