Skip to content

Commit 268aa3d

Browse files
committed
Add tera filter to_hex for use in test templates
1 parent 4696194 commit 268aa3d

1 file changed

Lines changed: 16 additions & 1 deletion

File tree

rust-tooling/src/exercise_generation.rs

Lines changed: 16 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,5 @@
1+
use std::collections::HashMap;
2+
13
use tera::Context;
24

35
use crate::{
@@ -81,6 +83,14 @@ fn extend_single_cases(single_cases: &mut Vec<SingleTestCase>, cases: Vec<TestCa
8183
}
8284
}
8385

86+
// TODO document how to write tera templates for other contributors
87+
fn to_hex(value: &tera::Value, _args: &HashMap<String, tera::Value>) -> tera::Result<tera::Value> {
88+
Ok(serde_json::Value::String(format!(
89+
"{:x}",
90+
value.as_u64().unwrap()
91+
)))
92+
}
93+
8494
fn generate_tests(slug: &str, fn_names: Vec<String>) -> String {
8595
let cases = get_canonical_data(slug).cases;
8696
let excluded_tests = get_excluded_tests(slug);
@@ -90,6 +100,7 @@ fn generate_tests(slug: &str, fn_names: Vec<String>) -> String {
90100
.add_raw_template("test_template.tera", TEST_TEMPLATE)
91101
.unwrap();
92102
}
103+
template.register_filter("to_hex", to_hex);
93104

94105
let mut single_cases = Vec::new();
95106
extend_single_cases(&mut single_cases, cases);
@@ -100,5 +111,9 @@ fn generate_tests(slug: &str, fn_names: Vec<String>) -> String {
100111
context.insert("fn_names", &fn_names);
101112
context.insert("cases", &single_cases);
102113

103-
template.render("test_template.tera", &context).unwrap().trim_start().into()
114+
template
115+
.render("test_template.tera", &context)
116+
.unwrap()
117+
.trim_start()
118+
.into()
104119
}

0 commit comments

Comments
 (0)