| 123456789101112131415161718192021222324252627282930313233343536373839404142 | using System;using System.Collections.Generic;using InABox.Core;using Scriban;using Scriban.Runtime;namespace PRSDesktop{    public static class DataModelUtils    {        public static string ParseTemplate(DataModel model, string data)        {            if (string.IsNullOrWhiteSpace(data))                return "";            var template = Template.Parse(data);            if (template.HasErrors) throw new Exception(string.Join("\n", template.Messages));            var templatecontext = new TemplateContext            {                MemberRenamer = member => member.Name            };            var so = new ScriptObject();            ScriptObjectExtensions.Import(so, "string.to_base64", new Func<byte[], string>(b => Convert.ToBase64String(b)));            foreach (var (key, table) in model.ModelTables)            {                var objects = new List<object>();                if (table.Type is not null)                {                    foreach (var tablerow in table.Table.Rows)                        objects.Add(tablerow.ToObject(table.Type));                }                so.Add(key, objects);            }            templatecontext.PushGlobal(so);            return template.Render(templatecontext);        }    }}
 |