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); }
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); }