diff --git a/Liquid.NET.Tests/Utils/LiquidValueConverterTests.cs b/Liquid.NET.Tests/Utils/LiquidValueConverterTests.cs index 5f1deb9..a7952f8 100755 --- a/Liquid.NET.Tests/Utils/LiquidValueConverterTests.cs +++ b/Liquid.NET.Tests/Utils/LiquidValueConverterTests.cs @@ -123,6 +123,29 @@ public void It_Should_Covert_A_DateTime() Assert.Equal(new LiquidDate(dateTime), val.Value); } + [Fact] + public void It_Should_Convert_Guid_To_LiquidString() + { + var guid = Guid.NewGuid(); + var val = _converter.Convert(guid); + + Assert.True(val.HasValue); + Assert.IsType(val.Value); + Assert.Equal(LiquidString.Create(guid.ToString("D")), val.Value); + } + + enum TestEnum { One, Two, Three } + [Fact] + public void It_Should_Convert_Enum_To_LiquidString() + { + var testEnum = TestEnum.One; + var val = _converter.Convert(testEnum); + + Assert.True(val.HasValue); + Assert.IsType(val.Value); + Assert.Equal(LiquidString.Create(Enum.GetName(testEnum.GetType(), testEnum)), val.Value); + } + [Fact] public void It_Should_Convert_Generic_List_To_Collection() { diff --git a/Liquid.NET/src/Utils/LiquidValueConverter.cs b/Liquid.NET/src/Utils/LiquidValueConverter.cs index fea3eb8..68ffa78 100755 --- a/Liquid.NET/src/Utils/LiquidValueConverter.cs +++ b/Liquid.NET/src/Utils/LiquidValueConverter.cs @@ -130,6 +130,21 @@ private Option FromPrimitive(Object obj) var val = obj as IDictionary; return CreateHash(val); } + + if (IsGuid(obj)) + { + var val = obj as Guid?; + if (val.HasValue) + { + return LiquidString.Create(val.Value.ToString("D")); + } + } + + if (IsEnum(obj)) + { + return LiquidString.Create(Enum.GetName(obj.GetType(), obj)); + } + return null; } @@ -172,6 +187,16 @@ private bool IsList(Object value) return value is IList; } + private bool IsGuid(Object value) + { + return value is Guid; + } + + public bool IsEnum(Object value) + { + return value is Enum; + } + // http://stackoverflow.com/questions/1130698/checking-if-an-object-is-a-number-in-c-sharp#answer-1130705 private bool IsInt32Like(object value) {