diff --git a/Fluid.Tests/TemplateContextTests.cs b/Fluid.Tests/TemplateContextTests.cs index bae72806..b58bae4a 100644 --- a/Fluid.Tests/TemplateContextTests.cs +++ b/Fluid.Tests/TemplateContextTests.cs @@ -126,6 +126,14 @@ public void CaptureShouldUpdateContext() Assert.Contains("greetings", context.ValueNames); } + [Fact] + public void ScopeSetValueAcceptsNull() + { + var context = new TemplateContext(); + context.SetValue("text", null); + Assert.Equal(NilValue.Instance, context.GetValue("text")); + } + private class TestClass { public string Name { get; set; } diff --git a/Fluid/Scope.cs b/Fluid/Scope.cs index d94c5ad9..05fb3466 100644 --- a/Fluid/Scope.cs +++ b/Fluid/Scope.cs @@ -58,7 +58,7 @@ public void SetValue(string name, FluidValue value) { _properties ??= new Dictionary(); - _properties[name] = value; + _properties[name] = value ?? NilValue.Instance; } public Scope EnterChildScope(Scope parent = null) diff --git a/Fluid/TemplateContext.cs b/Fluid/TemplateContext.cs index 997026e9..ec586576 100644 --- a/Fluid/TemplateContext.cs +++ b/Fluid/TemplateContext.cs @@ -237,6 +237,11 @@ public static TemplateContext SetValue(this TemplateContext context, string name public static TemplateContext SetValue(this TemplateContext context, string name, object value) { + if (value == null) + { + return context.SetValue(name, NilValue.Instance); + } + return context.SetValue(name, FluidValue.Create(value, context.Options)); }