diff options
author | Daniel Silverstone <dsilvers@digital-scurf.org> | 2020-12-05 11:33:09 +0000 |
---|---|---|
committer | Daniel Silverstone <dsilvers@digital-scurf.org> | 2020-12-10 09:57:05 +0000 |
commit | cded5bf666846309fa745ca761940df0042bb5b4 (patch) | |
tree | 56f9b059b010f5fefed03f82b20f1836a4ac90ec /src/codegen.rs | |
parent | 8da8a9693b2f6404a174d000840bf40c5826abdb (diff) | |
download | subplot-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.rs | 19 |
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, |