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 @@ + +