Skip to content
3 changes: 1 addition & 2 deletions Fluid.Benchmarks/CompiledFluidBenchmarks.cs
Original file line number Diff line number Diff line change
Expand Up @@ -11,8 +11,7 @@ public class CompiledFluidBenchmarks : BaseBenchmarks

public CompiledFluidBenchmarks()
{
_options.MemberAccessStrategy.Register<Product>();
_options.MemberAccessStrategy.MemberNameStrategy = MemberNameStrategies.CamelCase;
_options.ModelNamesComparer = StringComparers.CamelCase;
_parser.TryParse(ProductTemplate, out _fluidTemplate, out var _);

CheckBenchmark();
Expand Down
3 changes: 1 addition & 2 deletions Fluid.Benchmarks/FluidBenchmarks.cs
Original file line number Diff line number Diff line change
Expand Up @@ -12,8 +12,7 @@ public class FluidBenchmarks : BaseBenchmarks

public FluidBenchmarks()
{
_options.MemberAccessStrategy.MemberNameStrategy = MemberNameStrategies.CamelCase;
_options.MemberAccessStrategy.Register<Product>();
_options.ModelNamesComparer = StringComparers.CamelCase;
_parser.TryParse(ProductTemplate, out _fluidTemplate, out var _);

CheckBenchmark();
Expand Down
2 changes: 1 addition & 1 deletion Fluid.Benchmarks/Program.cs
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ class Program
{
static void Main(string[] args)
{
BenchmarkSwitcher.FromAssembly(typeof(Program).Assembly).Run(args);
BenchmarkSwitcher.FromAssembly(typeof(Program).Assembly).Run(args);
}
}
}
3 changes: 1 addition & 2 deletions Fluid.MvcSample/Startup.cs
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
using Fluid.MvcViewEngine;
using Fluid.MvcViewEngine;
using Microsoft.AspNetCore.Builder;
using Microsoft.AspNetCore.Hosting;
using Microsoft.Extensions.DependencyInjection;
Expand All @@ -15,7 +15,6 @@ public void ConfigureServices(IServiceCollection services)
services.Configure<FluidMvcViewOptions>(options =>
{
options.Parser = new CustomFluidViewParser(new FluidParserOptions());
options.TemplateOptions.MemberAccessStrategy = UnsafeMemberAccessStrategy.Instance;
});

services.AddMvc().AddFluid();
Expand Down
4 changes: 1 addition & 3 deletions Fluid.MvcViewEngine/FluidRendering.cs
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
using Fluid.ViewEngine;
using Fluid.ViewEngine;
using Microsoft.AspNetCore.Hosting;
using Microsoft.AspNetCore.Mvc.ModelBinding;
using Microsoft.AspNetCore.Mvc.Rendering;
Expand All @@ -23,8 +23,6 @@ public FluidRendering(
_hostingEnvironment = hostingEnvironment;
_options = optionsAccessor.Value;

_options.TemplateOptions.MemberAccessStrategy.Register<ViewDataDictionary>();
_options.TemplateOptions.MemberAccessStrategy.Register<ModelStateDictionary>();
_options.TemplateOptions.FileProvider = _options.PartialsFileProvider ?? _hostingEnvironment.ContentRootFileProvider;

_fluidViewRenderer = new FluidViewRenderer(_options);
Expand Down
28 changes: 7 additions & 21 deletions Fluid.Tests/ArrayFiltersTests.cs
Original file line number Diff line number Diff line change
Expand Up @@ -144,7 +144,6 @@ public async Task Map()

var options = new TemplateOptions();
var context = new TemplateContext(options);
options.MemberAccessStrategy.Register(new { Title = "a" }.GetType());

var result = await ArrayFilters.Map(input, arguments, context);

Expand All @@ -168,8 +167,6 @@ public async Task Map_DeepProperties()

var options = new TemplateOptions();
var context = new TemplateContext(options);
options.MemberAccessStrategy.Register(sample.GetType());
options.MemberAccessStrategy.Register(sample.Title.GetType());

var result = await ArrayFilters.Map(input, arguments, context);

Expand Down Expand Up @@ -251,7 +248,6 @@ public async Task Sort()

var options = new TemplateOptions();
var context = new TemplateContext(options);
options.MemberAccessStrategy.Register(sample.GetType(), "Title");

var result = await ArrayFilters.Sort(input, arguments, context);

Expand All @@ -263,9 +259,7 @@ public async Task Sort()
arguments = new FilterArguments().Add(new StringValue("Address.Zip"));

options = new TemplateOptions();
context = new TemplateContext(options);
options.MemberAccessStrategy.Register(sample.GetType(), "Address");
options.MemberAccessStrategy.Register(sample.Address.GetType(), "Zip");
context = new TemplateContext(options);

result = await ArrayFilters.Sort(input, arguments, context);

Expand Down Expand Up @@ -345,7 +339,6 @@ public async Task Where()

var options = new TemplateOptions();
var context = new TemplateContext(options);
options.MemberAccessStrategy.Register(new { Title = "a", Pinned = true }.GetType());

var arguments1 = new FilterArguments().Add(new StringValue("Pinned"));

Expand Down Expand Up @@ -383,8 +376,6 @@ public async Task WhereWithTruthy()

var options = new TemplateOptions();
var context = new TemplateContext(options);
options.MemberAccessStrategy.Register(new { Title = "a", Pinned = true }.GetType());
options.MemberAccessStrategy.Register(new { Title = "a", Pinned = true, Missing = 1 }.GetType());

// x | where: "Missing"

Expand Down Expand Up @@ -431,7 +422,6 @@ public async Task WhereShouldNotThrow()

var options = new TemplateOptions();
var context = new TemplateContext(options);
options.MemberAccessStrategy.Register(new { Title = "a", Pinned = true }.GetType());

var arguments1 = new FilterArguments().Add(new StringValue("a.b.c"));

Expand All @@ -455,7 +445,7 @@ public async Task Sum()

var options = new TemplateOptions();
var context = new TemplateContext(options);
options.MemberAccessStrategy.Register(sample.GetType(), "Value");
//options.MemberAccessStrategy.Register(sample.GetType(), "Value");

var result = await ArrayFilters.Sum(input, arguments, context);

Expand Down Expand Up @@ -650,11 +640,11 @@ public async Task SumWithDecimalsAndArguments(string filterArgument, decimal exp

var options = new TemplateOptions();
var context = new TemplateContext(options);

options.MemberAccessStrategy.Register(quantityObjectType.GetType(), filterArgument);
options.MemberAccessStrategy.Register(weightObjectType.GetType(), filterArgument);
options.MemberAccessStrategy.Register(quantityAndWeightObjectType.GetType(), filterArgument);

//options.MemberAccessStrategy.Register(quantityObjectType.GetType(), filterArgument);
//options.MemberAccessStrategy.Register(weightObjectType.GetType(), filterArgument);
//options.MemberAccessStrategy.Register(quantityAndWeightObjectType.GetType(), filterArgument);
var result = await ArrayFilters.Sum(input, arguments, context);

Assert.Equal(expectedValue, result.ToNumberValue());
Expand All @@ -671,7 +661,6 @@ public async Task Reject()

var options = new TemplateOptions();
var context = new TemplateContext(options);
options.MemberAccessStrategy.Register(new { Title = "a", Pinned = true }.GetType());

var arguments1 = new FilterArguments().Add(new StringValue("Pinned"));

Expand Down Expand Up @@ -708,7 +697,6 @@ public async Task Find()

var options = new TemplateOptions();
var context = new TemplateContext(options);
options.MemberAccessStrategy.Register(new { Title = "a", Pinned = true }.GetType());

var arguments1 = new FilterArguments().Add(new StringValue("Pinned")).Add(BooleanValue.True);

Expand Down Expand Up @@ -759,7 +747,6 @@ public async Task FindIndex()

var options = new TemplateOptions();
var context = new TemplateContext(options);
options.MemberAccessStrategy.Register(new { Title = "a", Pinned = true }.GetType());

var arguments1 = new FilterArguments().Add(new StringValue("Pinned")).Add(BooleanValue.True);

Expand Down Expand Up @@ -810,7 +797,6 @@ public async Task Has()

var options = new TemplateOptions();
var context = new TemplateContext(options);
options.MemberAccessStrategy.Register(new { Title = "a", Pinned = true }.GetType());

var arguments1 = new FilterArguments().Add(new StringValue("Pinned")).Add(BooleanValue.True);

Expand Down
33 changes: 15 additions & 18 deletions Fluid.Tests/IncludeStatementTests.cs
Original file line number Diff line number Diff line change
Expand Up @@ -7,13 +7,10 @@
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Runtime.InteropServices;
using System.Text.Encodings.Web;
using System.Threading;
using System.Threading.Tasks;
using Xunit;
using Xunit.Abstractions;
using Xunit.Sdk;

namespace Fluid.Tests
{
Expand Down Expand Up @@ -189,7 +186,7 @@ public void IncludeTag_With()
var fileProvider = new MockFileProvider();
fileProvider.Add("product.liquid", "Product: {{ product.title }} ");

var options = new TemplateOptions() { FileProvider = fileProvider, MemberAccessStrategy = UnsafeMemberAccessStrategy.Instance };
var options = new TemplateOptions() { FileProvider = fileProvider };
var context = new TemplateContext(options);
context.SetValue("products", new[] { new { title = "Draft 151cm" }, new { title = "Element 155cm" } });
_parser.TryParse("{% include 'product' with products[0] %}", out var template);
Expand All @@ -204,7 +201,7 @@ public void IncludeTag_With_Alias()
var fileProvider = new MockFileProvider();
fileProvider.Add("product_alias.liquid", "Product: {{ product.title }} ");

var options = new TemplateOptions() { FileProvider = fileProvider, MemberAccessStrategy = UnsafeMemberAccessStrategy.Instance };
var options = new TemplateOptions() { FileProvider = fileProvider };
var context = new TemplateContext(options);
context.SetValue("products", new[] { new { title = "Draft 151cm" }, new { title = "Element 155cm" } });
_parser.TryParse("{% include 'product_alias' with products[0] as product %}", out var template);
Expand All @@ -219,7 +216,7 @@ public void RenderTag_With_Alias()
var fileProvider = new MockFileProvider();
fileProvider.Add("product_alias.liquid", "Product: {{ product.title }} ");

var options = new TemplateOptions() { FileProvider = fileProvider, MemberAccessStrategy = UnsafeMemberAccessStrategy.Instance };
var options = new TemplateOptions() { FileProvider = fileProvider };
var context = new TemplateContext(options);
context.SetValue("products", new[] { new { title = "Draft 151cm" }, new { title = "Element 155cm" } });
_parser.TryParse("{% render 'product_alias' with products[0] as product %}", out var template);
Expand All @@ -234,7 +231,7 @@ public void IncludeTag_With_Default_Name()
var fileProvider = new MockFileProvider();
fileProvider.Add("product.liquid", "Product: {{ product.title }} ");

var options = new TemplateOptions() { FileProvider = fileProvider, MemberAccessStrategy = UnsafeMemberAccessStrategy.Instance };
var options = new TemplateOptions() { FileProvider = fileProvider };
var context = new TemplateContext(options);
context.SetValue("product", new { title = "Draft 151cm" });
_parser.TryParse("{% include 'product' %}", out var template);
Expand All @@ -249,7 +246,7 @@ public void RenderTag_With_Default_Name()
var fileProvider = new MockFileProvider();
fileProvider.Add("product.liquid", "Product: {{ product.title }} ");

var options = new TemplateOptions() { FileProvider = fileProvider, MemberAccessStrategy = UnsafeMemberAccessStrategy.Instance };
var options = new TemplateOptions() { FileProvider = fileProvider };
var context = new TemplateContext(options);
context.SetValue("product", new { title = "Draft 151cm" });
_parser.TryParse("{% render 'product' %}", out var template);
Expand All @@ -264,7 +261,7 @@ public void Increment_Is_Isolated_Between_Renders()
var fileProvider = new MockFileProvider();
fileProvider.Add("incr.liquid", "{% increment %}");

var options = new TemplateOptions() { FileProvider = fileProvider, MemberAccessStrategy = UnsafeMemberAccessStrategy.Instance };
var options = new TemplateOptions() { FileProvider = fileProvider };
var context = new TemplateContext(options);
_parser.TryParse("{% increment %}{% increment %}{% render 'incr' %}", out var template, out var error);
Assert.Null(error);
Expand All @@ -277,7 +274,7 @@ public void Increment_Is_Isolated_Between_Renders()
public void RenderTagCantUseDynamicName()
{
var fileProvider = new MockFileProvider();
var options = new TemplateOptions() { FileProvider = fileProvider, MemberAccessStrategy = UnsafeMemberAccessStrategy.Instance };
var options = new TemplateOptions() { FileProvider = fileProvider };
var context = new TemplateContext(options);
var result = _parser.TryParse("{% assign name = 'snippet' %}{% render name %}", out var template, out var error);
Assert.False(result);
Expand All @@ -290,7 +287,7 @@ public void IncludeTag_For_Loop()
var fileProvider = new MockFileProvider();
fileProvider.Add("product.liquid", "Product: {{ product.title }} {% if forloop.first %}first{% endif %} {% if forloop.last %}last{% endif %} index:{{ forloop.index }} rindex:{{ forloop.rindex }} rindex0:{{ forloop.rindex0 }} " );

var options = new TemplateOptions() { FileProvider = fileProvider, MemberAccessStrategy = UnsafeMemberAccessStrategy.Instance };
var options = new TemplateOptions() { FileProvider = fileProvider };
var context = new TemplateContext(options);
context.SetValue("products", new[] { new { title = "Draft 151cm" }, new { title = "Element 155cm" } });
_parser.TryParse("{% include 'product' for products %}", out var template);
Expand All @@ -306,7 +303,7 @@ public void RenderTag_For_Loop()
var fileProvider = new MockFileProvider();
fileProvider.Add("product.liquid", "Product: {{ product.title }} {% if forloop.first %}first{% endif %} {% if forloop.last %}last{% endif %} index:{{ forloop.index }} rindex:{{ forloop.rindex }} rindex0:{{ forloop.rindex0 }} " );

var options = new TemplateOptions() { FileProvider = fileProvider, MemberAccessStrategy = UnsafeMemberAccessStrategy.Instance };
var options = new TemplateOptions() { FileProvider = fileProvider };
var context = new TemplateContext(options);
context.SetValue("products", new[] { new { title = "Draft 151cm" }, new { title = "Element 155cm" } });
_parser.TryParse("{% render 'product' for products %}", out var template);
Expand All @@ -322,7 +319,7 @@ public void RenderTag_Does_Not_Inherit_Parent_Scope_Variables()
var fileProvider = new MockFileProvider();
fileProvider.Add("snippet.liquid", "{{ outer_variable }}");

var options = new TemplateOptions() { FileProvider = fileProvider, MemberAccessStrategy = UnsafeMemberAccessStrategy.Instance };
var options = new TemplateOptions() { FileProvider = fileProvider };
var context = new TemplateContext(options);
context.SetValue("product", new { title = "Draft 151cm" });
_parser.TryParse("{% assign outer_variable = 'should not be visible' %}{% render 'snippet' %}", out var template);
Expand All @@ -337,7 +334,7 @@ public void IncludeTag_Does_Inherit_Parent_Scope_Variables()
var fileProvider = new MockFileProvider();
fileProvider.Add("snippet.liquid", "{{ outer_variable }}");

var options = new TemplateOptions() { FileProvider = fileProvider, MemberAccessStrategy = UnsafeMemberAccessStrategy.Instance };
var options = new TemplateOptions() { FileProvider = fileProvider };
var context = new TemplateContext(options);
context.SetValue("product", new { title = "Draft 151cm" });
_parser.TryParse("{% assign outer_variable = 'should be visible' %}{% include 'snippet' %}", out var template);
Expand All @@ -352,7 +349,7 @@ public void RenderTag_Inherits_Global_Scope_Variables()
var fileProvider = new MockFileProvider();
fileProvider.Add("snippet.liquid", "{{ global_variable }}");

var options = new TemplateOptions() { FileProvider = fileProvider, MemberAccessStrategy = UnsafeMemberAccessStrategy.Instance };
var options = new TemplateOptions() { FileProvider = fileProvider };
var context = new TemplateContext(options);
options.Scope.SetValue("global_variable", new StringValue("global value"));
context.SetValue("product", new { title = "Draft 151cm" });
Expand All @@ -374,7 +371,7 @@ public async Task IncludeTag_Cache_Is_ThreadSafe()
fileProvider.Add($"{t[0]}.liquid", t);
}

var options = new TemplateOptions() { FileProvider = fileProvider, MemberAccessStrategy = UnsafeMemberAccessStrategy.Instance };
var options = new TemplateOptions() { FileProvider = fileProvider };
_parser.TryParse("{%- include file -%}", out var template);

var stopped = false;
Expand Down Expand Up @@ -406,7 +403,7 @@ public void IncludeTag_Caches_Template(bool useExtension)
var fileProvider = new MockFileProvider();
fileProvider.Add("a.liquid", "AAAA");

var options = new TemplateOptions() { FileProvider = fileProvider, MemberAccessStrategy = UnsafeMemberAccessStrategy.Instance };
var options = new TemplateOptions() { FileProvider = fileProvider };
var context = new TemplateContext(options);
IFluidTemplate template = null;

Expand Down Expand Up @@ -459,7 +456,7 @@ public void IncludeTag_Caches_ParsedTemplate()

var fileInfos = templates.ToDictionary(t => t.Key, t => fileProvider.GetFileInfo(t.Key));

var options = new TemplateOptions() { FileProvider = fileProvider, MemberAccessStrategy = UnsafeMemberAccessStrategy.Instance };
var options = new TemplateOptions() { FileProvider = fileProvider };
_parser.TryParse("{%- include file -%}", out var template);

// The first time a template is included it will be read from the file provider
Expand Down
Loading