Esempio n. 1
0
        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);
        }
Esempio n. 2
0
        /// <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));
        }
Esempio n. 4
0
        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));
        }
Esempio n. 5
0
        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));
        }
Esempio n. 6
0
        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));
        }
Esempio n. 7
0
 public static TemplateContext SetValue(this TemplateContext context, string name, Func <FluidValue> factory)
 {
     return(context.SetValue(name, new FactoryValue(factory)));
 }
Esempio n. 8
0
 public static TemplateContext SetValue(this TemplateContext context, string name, object value)
 {
     return(context.SetValue(name, FluidValue.Create(value, context.Options)));
 }
Esempio n. 9
0
 public static TemplateContext SetValue(this TemplateContext context, string name, bool value)
 {
     return(context.SetValue(name, BooleanValue.Create(value)));
 }
Esempio n. 10
0
 public static TemplateContext SetValue(this TemplateContext context, string name, char value)
 {
     return(context.SetValue(name, StringValue.Create(value)));
 }
Esempio n. 11
0
 public static TemplateContext SetValue(this TemplateContext context, string name, string value)
 {
     return(context.SetValue(name, new StringValue(value)));
 }
Esempio n. 12
0
 public static TemplateContext SetValue(this TemplateContext context, string name, int value)
 {
     return(context.SetValue(name, NumberValue.Create(value)));
 }