From 59c11ce303661ef51b7383450eb6b16357ab460a Mon Sep 17 00:00:00 2001 From: Sam O'Connor Date: Fri, 20 Oct 2017 10:36:17 +1300 Subject: [PATCH 1/2] Support guid serialization --- Liquid.NET.Tests/Utils/LiquidValueConverterTests.cs | 11 +++++++++++ Liquid.NET/src/Utils/LiquidValueConverter.cs | 13 +++++++++++++ 2 files changed, 24 insertions(+) diff --git a/Liquid.NET.Tests/Utils/LiquidValueConverterTests.cs b/Liquid.NET.Tests/Utils/LiquidValueConverterTests.cs index 5f1deb9..21b19d5 100755 --- a/Liquid.NET.Tests/Utils/LiquidValueConverterTests.cs +++ b/Liquid.NET.Tests/Utils/LiquidValueConverterTests.cs @@ -123,6 +123,17 @@ 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); + } + [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..746f149 100755 --- a/Liquid.NET/src/Utils/LiquidValueConverter.cs +++ b/Liquid.NET/src/Utils/LiquidValueConverter.cs @@ -130,6 +130,15 @@ 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")); + } + } return null; } @@ -172,6 +181,10 @@ private bool IsList(Object value) return value is IList; } + private bool IsGuid(Object value) + { + return value is Guid; + } // http://stackoverflow.com/questions/1130698/checking-if-an-object-is-a-number-in-c-sharp#answer-1130705 private bool IsInt32Like(object value) { From f427485d7cdfd6b8618410f1f271262b7a5b2057 Mon Sep 17 00:00:00 2001 From: Sam O'Connor Date: Fri, 20 Oct 2017 10:36:47 +1300 Subject: [PATCH 2/2] Support enum serialization --- Liquid.NET.Tests/Utils/LiquidValueConverterTests.cs | 12 ++++++++++++ Liquid.NET/src/Utils/LiquidValueConverter.cs | 12 ++++++++++++ 2 files changed, 24 insertions(+) diff --git a/Liquid.NET.Tests/Utils/LiquidValueConverterTests.cs b/Liquid.NET.Tests/Utils/LiquidValueConverterTests.cs index 21b19d5..a7952f8 100755 --- a/Liquid.NET.Tests/Utils/LiquidValueConverterTests.cs +++ b/Liquid.NET.Tests/Utils/LiquidValueConverterTests.cs @@ -134,6 +134,18 @@ public void It_Should_Convert_Guid_To_LiquidString() 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 746f149..68ffa78 100755 --- a/Liquid.NET/src/Utils/LiquidValueConverter.cs +++ b/Liquid.NET/src/Utils/LiquidValueConverter.cs @@ -139,6 +139,12 @@ private Option FromPrimitive(Object obj) return LiquidString.Create(val.Value.ToString("D")); } } + + if (IsEnum(obj)) + { + return LiquidString.Create(Enum.GetName(obj.GetType(), obj)); + } + return null; } @@ -185,6 +191,12 @@ 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) {