Example #1
0
        /// <inheritdoc />
        public override Func <ITag, TemplateContext, object> BuildExcuteMethod()
        {
            return((tag, context) =>
            {
                var t = tag as LoadTag;
                object path = context.Execute(t.Path);
                if (path == null)
                {
                    return null;
                }
                var res = context.FindFullPath(path.ToString());
                if (string.IsNullOrEmpty(res))
                {
                    return null;
                }

                var reader = new Resources.ResourceReader(res);

                var result = context.InterpretTemplate(res, reader);

                using (System.IO.StringWriter writer = new StringWriter())
                {
                    result.Render(writer, context);
                    return writer.ToString();
                }
            });
        }
Example #2
0
        /// <inheritdoc />
        public override Func <ITag, TemplateContext, object> BuildExcuteMethod()
        {
            return((tag, context) =>
            {
                var t = tag as LayoutTag;
                object path = context.Execute(t.Path);
                if (path == null)
                {
                    return null;
                }
                var res = context.FindFullPath(path.ToString());
                if (string.IsNullOrEmpty(res))
                {
                    return null;
                }
                var reader = new Resources.ResourceReader(res);

                var result = (InterpretResult)context.InterpretTemplate(res, reader);
                var tags = new List <ITag>();
                for (int i = 0; i < result.Tags.Length; i++)
                {
                    if (result.Tags[i] is BodyTag _)
                    {
                        for (int j = 0; j < t.Children.Count; j++)
                        {
                            tags.Add(t.Children[j]);
                        }
                        continue;
                    }
                    tags.Add(result.Tags[i]);
                }
                using (System.IO.StringWriter writer = new StringWriter())
                {
                    context.Render(writer, tags.ToArray());
                    return writer.ToString();
                }
            });
        }