Exemplo n.º 1
0
        internal override bool ExecuteJsonUntypedSource(TemplateItem item, ISource source, Result result)
        {
            if (!(source is JsonUntypedSource jsonSource))
            {
                return(false);
            }

            var template = Scriban.Template.Parse(item.Text);

            var scriptObject = new ScriptObject();
            var context      = new TemplateContext {
                MemberRenamer = member => member.Name
            };

            context.PushGlobal(scriptObject);
            scriptObject["fn"] = new ScribanFunctions();

            var expando = JsonConvert.DeserializeObject <ExpandoObject>(jsonSource.Json);
            var src     = BuildScriptObject(expando);

            var list = GetObjectEnumerable(src, null, item);

            foreach (var itm in list)
            {
                // scriptObject["model"] = itm;
                scriptObject.Import(itm);
                var key    = GetOutputKey(itm, item, context);
                var output = template.Render(context);
                result.Add(key, output);
            }

            return(true);
        }
Exemplo n.º 2
0
        internal override bool ExecuteObjectSource(TemplateItem item, ISource source, Result result)
        {
            if (!(source is ObjectSource objectSource))
            {
                return(false);
            }

            var sourceType = objectSource.SourceObject.GetType();
            var template   = Scriban.Template.Parse(item.Text);

            var scriptObject = new ScriptObject();
            var context      = new TemplateContext {
                MemberRenamer = member => member.Name
            };

            context.PushGlobal(scriptObject);
            scriptObject["fn"] = new ScribanFunctions();

            var list = GetObjectEnumerable(objectSource.SourceObject, sourceType, item);

            foreach (var itm in list)
            {
                scriptObject["model"] = itm;
                var key    = GetOutputKey(itm, item, context);
                var output = template.Render(context);
                result.Add(key, output);
            }

            return(true);
        }