From 1b20da0157225ffd1058be9d1b76b3ca232ec372 Mon Sep 17 00:00:00 2001 From: Stef Heyenrath Date: Sat, 16 Jan 2021 08:10:15 +0000 Subject: [PATCH] context --- .../Scriban/WireMockListAccessor.cs | 55 +++++++++++++++++++ .../Scriban/WireMockTemplateContext.cs | 19 +++++++ src/WireMock.Net/WireMock.Net.csproj | 2 + 3 files changed, 76 insertions(+) create mode 100644 src/WireMock.Net/Transformers/Scriban/WireMockListAccessor.cs create mode 100644 src/WireMock.Net/Transformers/Scriban/WireMockTemplateContext.cs diff --git a/src/WireMock.Net/Transformers/Scriban/WireMockListAccessor.cs b/src/WireMock.Net/Transformers/Scriban/WireMockListAccessor.cs new file mode 100644 index 000000000..08af878ee --- /dev/null +++ b/src/WireMock.Net/Transformers/Scriban/WireMockListAccessor.cs @@ -0,0 +1,55 @@ +using System; +using System.Collections.Generic; +using Scriban; +using Scriban.Parsing; +using Scriban.Runtime; + +namespace WireMock.Transformers.Scriban +{ + internal class WireMockListAccessor : IListAccessor, IObjectAccessor + { + #region IListAccessor + public int GetLength(TemplateContext context, SourceSpan span, object target) + { + throw new NotImplementedException(); + } + + public object GetValue(TemplateContext context, SourceSpan span, object target, int index) + { + return target.ToString(); + } + + public void SetValue(TemplateContext context, SourceSpan span, object target, int index, object value) + { + throw new NotImplementedException(); + } + #endregion + + #region IObjectAccessor + public int GetMemberCount(TemplateContext context, SourceSpan span, object target) + { + throw new NotImplementedException(); + } + + public IEnumerable GetMembers(TemplateContext context, SourceSpan span, object target) + { + throw new NotImplementedException(); + } + + public bool HasMember(TemplateContext context, SourceSpan span, object target, string member) + { + throw new NotImplementedException(); + } + + public bool TryGetValue(TemplateContext context, SourceSpan span, object target, string member, out object value) + { + throw new NotImplementedException(); + } + + public bool TrySetValue(TemplateContext context, SourceSpan span, object target, string member, object value) + { + throw new NotImplementedException(); + } + #endregion + } +} \ No newline at end of file diff --git a/src/WireMock.Net/Transformers/Scriban/WireMockTemplateContext.cs b/src/WireMock.Net/Transformers/Scriban/WireMockTemplateContext.cs new file mode 100644 index 000000000..817a88c56 --- /dev/null +++ b/src/WireMock.Net/Transformers/Scriban/WireMockTemplateContext.cs @@ -0,0 +1,19 @@ +using Scriban; +using Scriban.Runtime; +using WireMock.Types; + +namespace WireMock.Transformers.Scriban +{ + internal class WireMockTemplateContext: TemplateContext + { + protected override IObjectAccessor GetMemberAccessorImpl(object target) + { + if (target?.GetType().GetGenericTypeDefinition() == typeof(WireMockList<>)) + { + return new WireMockListAccessor(); + } + + return base.GetMemberAccessorImpl(target); + } + } +} \ No newline at end of file diff --git a/src/WireMock.Net/WireMock.Net.csproj b/src/WireMock.Net/WireMock.Net.csproj index 69e7aaf9b..8f11d8e68 100644 --- a/src/WireMock.Net/WireMock.Net.csproj +++ b/src/WireMock.Net/WireMock.Net.csproj @@ -52,6 +52,8 @@ + +