public void FluidShouldWorksWithDynamicObject() { dynamic model = new { Str1 = "Fluid", Str2 = "Template", Numbers = new Item[] { new Item { Number = 1 }, new Item { Number = 2 } } }; var source = "Hello {{p.Str1}} {{ p.Str2 }} [{% for i in p.Numbers %}{{i.Number}}{% endfor %}]"; Assert.True(FluidTemplate.TryParse(source, out var template)); var context = new Fluid.TemplateContext(); context.SetValue("p", model); context.MemberAccessStrategy.Register(model.GetType() as Type); context.MemberAccessStrategy.Register(typeof(Item)); var result = template.Render(context); Assert.AreEqual($"Hello {model.Str1} {model.Str2} [{model.Numbers[0].Number}{model.Numbers[1].Number}]", result); }
/// <summary> /// Renders the template. /// </summary> /// <param name="context">The values and parameters to render the template with.</param> /// <returns>The rendered template.</returns> public string Render(TemplateContext context) { if (context == null) { throw new ArgumentNullException(nameof(context)); } if (this.fluidTemplate == null) { throw new InvalidOperationException("The template has not been parsed."); } Fluid.TemplateContext fluidContext = new Fluid.TemplateContext(); foreach (Type type in this.registeredTypes) { fluidContext.MemberAccessStrategy.Register(type); } foreach (KeyValuePair <string, object> value in context.Values) { fluidContext.SetValue(value.Key, value.Value); } return(this.fluidTemplate.Render(fluidContext)); }
public FluidValue Execute(FluidValue input, FilterArguments arguments, Fluid.TemplateContext context) { //TODO check arguments var cellType = arguments.At(0); var formatType = arguments.At(1); return(new OdsTableCellDataValue("123-123-123", null)); }
public FluidValue Execute(FluidValue input, FilterArguments arguments, Fluid.TemplateContext context) { var blob = input.ToObjectValue() as ImageBlob; if (blob == null) { throw new NotSupportedException($"The property of your image must be a 'ImageBlob' type"); } return(new OdfImageBlobValue(_document, blob)); }
public FluidValue Execute(FluidValue input, FilterArguments arguments, Fluid.TemplateContext context) { var blob = input.ToObjectValue() as ImageBlob; if (blob == null) { return(NilValue.Instance); } var base64 = Convert.ToBase64String(blob.GetBuffer()); return(new StringValue(base64)); }
public FluidValue Execute(FluidValue input, FilterArguments arguments, Fluid.TemplateContext context) { var buf = input.ToObjectValue() as byte[]; if (buf == null) { throw new NotSupportedException($"The type of input value must be 'byte[]'"); } var base64Str = Convert.ToBase64String(buf); return(new StringValue(base64Str)); }
public static TemplateContext SetValue(this TemplateContext context, string name, Func <FluidValue> factory) { return(context.SetValue(name, new FactoryValue(factory))); }
public static TemplateContext SetValue(this TemplateContext context, string name, object value) { return(context.SetValue(name, FluidValue.Create(value, context.Options))); }
public static TemplateContext SetValue(this TemplateContext context, string name, bool value) { return(context.SetValue(name, BooleanValue.Create(value))); }
public static TemplateContext SetValue(this TemplateContext context, string name, char value) { return(context.SetValue(name, StringValue.Create(value))); }
public static TemplateContext SetValue(this TemplateContext context, string name, string value) { return(context.SetValue(name, new StringValue(value))); }
public static TemplateContext SetValue(this TemplateContext context, string name, int value) { return(context.SetValue(name, NumberValue.Create(value))); }