public MainTemplateContext(DataScriptObject dataScriptObject, CustomFunctionsScriptObject customScriptObject, IExternalOutput externalOutput) : base(BuiltinFunctionsScriptObject.Singleton)
        {
            LoopLimit                 = 66_666;
            MemberRenamer             = member => member.Name;
            StrictVariables           = true;
            EnableRelaxedMemberAccess = false;

            PushGlobal(customScriptObject);
            PushGlobal(dataScriptObject);
            this.externalOutput = externalOutput;
        }
Beispiel #2
0
        public static async Task <Result> Render(string template, Dictionary <string, object> dataModels, Configuration configuration = null, IExternalOutput externalOutput = null)
        {
            var result          = new Result();
            var scribanTemplate = Template.Parse(template);

            result.AddMsgFromScribanTemplateParsing(scribanTemplate.Messages);

            if (result.HasErrors)
            {
                return(result);
            }

            var dataScriptObject = new DataScriptObject(dataModels);
            var userScriptObject = new CustomFunctionsScriptObject(configuration?.GetTypesWithCustomFuntions());
            var context          = new MainTemplateContext(dataScriptObject, userScriptObject, externalOutput);

            try
            {
                await scribanTemplate.RenderAsync(context);
            }
            catch (ScriptRuntimeException exception)
            {
                result.AddMsgFromScribanException(exception);
            }

            if (result.HasErrors)
            {
                return(result);
            }

            result.AddRenderedItems(context.GetRenderedItems());

            return(result);
        }
Beispiel #3
0
 public static async Task <Result> Render(string template, object dataModel, Configuration configuration = null, IExternalOutput externalOutput = null)
 {
     return(await Render(template, new Dictionary <string, object>() { [DataScriptObject.DataVariableName] = dataModel }, configuration, externalOutput));
 }