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