From 24d2c1831c6db4e790a4e05dbcfd5da3ba833694 Mon Sep 17 00:00:00 2001 From: Tom Alexander Date: Sun, 12 Apr 2020 21:26:23 -0400 Subject: [PATCH] Handle missing references --- js/test_cases/missing_reference/input1.json | 1 + js/test_cases/missing_reference/main.dust | 1 + src/renderer/renderer.rs | 9 +++++++-- 3 files changed, 9 insertions(+), 2 deletions(-) create mode 100644 js/test_cases/missing_reference/input1.json create mode 100644 js/test_cases/missing_reference/main.dust diff --git a/js/test_cases/missing_reference/input1.json b/js/test_cases/missing_reference/input1.json new file mode 100644 index 0000000..8bffc80 --- /dev/null +++ b/js/test_cases/missing_reference/input1.json @@ -0,0 +1 @@ +{"rank": "Admiral"} diff --git a/js/test_cases/missing_reference/main.dust b/js/test_cases/missing_reference/main.dust new file mode 100644 index 0000000..09f2e19 --- /dev/null +++ b/js/test_cases/missing_reference/main.dust @@ -0,0 +1 @@ +Hello {name}! diff --git a/src/renderer/renderer.rs b/src/renderer/renderer.rs index dcdbc8a..e28aa94 100644 --- a/src/renderer/renderer.rs +++ b/src/renderer/renderer.rs @@ -87,8 +87,13 @@ impl<'a> DustRenderer<'a> { match tag { DustTag::DTComment(_comment) => (), DustTag::DTReference(reference) => { - let val = walk_path(context, &reference.path.keys)?; - return val.render(); + let val = walk_path(context, &reference.path.keys); + if let Err(RenderError::WontWalk { .. }) = val { + // If reference does not exist in the context, it becomes an empty string + return Ok("".to_owned()); + } else { + return val?.render(); + } } _ => (), // TODO: Implement the rest }