示例#1
0
        public static ScriptObject From(object obj)
        {
            var scriptObject = new ScriptObject();

            scriptObject.Import(obj);
            return(scriptObject);
        }
示例#2
0
        public string Render(dynamic dmodel)
        {
            try
            {
                var xmodel = new Scriban.Runtime.ScriptObject();
                xmodel.Import(new { model = dmodel }, renamer: member => member.Name);
                var xfn = new Scriban.Runtime.ScriptObject();;
                xfn.Import(typeof(HlidacStatu.Lib.Render.ScribanT.Functions)
                           , renamer: member => member.Name);
                var context = new Scriban.TemplateContext {
                    MemberRenamer = member => member.Name, LoopLimit = 65000
                };
                context.PushCulture(System.Globalization.CultureInfo.CurrentCulture);
                context.PushGlobal(xmodel);
                context.PushGlobal(xfn);
                var scriptObjGlobalVariables = new ScriptObject();

                foreach (var kv in this.globalVariables)
                {
                    scriptObjGlobalVariables[kv.Key] = kv.Value;
                }

                context.PushGlobal(scriptObjGlobalVariables);

                var res = xTemplate.Render(context);
                return(res);
            }
            catch (Exception e)
            {
                HlidacStatu.Util.Consts.Logger.Error($"ScribanT render error\nTemplate {this.template}\n\n"
                                                     + Newtonsoft.Json.JsonConvert.SerializeObject(dmodel)
                                                     , e);
                throw;
            }
        }
示例#3
0
            public string Render(DataSet ds, dynamic dmodel, string qs = "",
                                 IReadOnlyDictionary <string, IReadOnlyCollection <string> > highlightingData = null)
            {
                string template = GetTemplateHeader(ds.DatasetId, qs) + this.body;
                var    xTemp    = Scriban.Template.Parse(template);

                if (xTemp.HasErrors)
                {
                    throw new System.ApplicationException(xTemp
                                                          .Messages
                                                          .Select(m => m.ToString())
                                                          .Aggregate((f, s) => f + "\n" + s)
                                                          );
                }

                var xmodel = new Scriban.Runtime.ScriptObject();

                xmodel.Import(new { model = dmodel }, renamer: member => member.Name);
                var xfn = new Scriban.Runtime.ScriptObject();;

                xfn.Import(typeof(HlidacStatu.Lib.Data.External.DataSets.Registration.Template.Functions)
                           , renamer: member => member.Name);
                var context = new Scriban.TemplateContext {
                    MemberRenamer = member => member.Name
                };

                context.PushCulture(System.Globalization.CultureInfo.CurrentCulture);
                context.PushGlobal(xmodel);
                context.PushGlobal(xfn);
                var scriptObjGlobalVariables = new ScriptObject();

                // Notice: MyObject is not imported but accessible through
                // the variable myobject
                scriptObjGlobalVariables["highlightingData"] = highlightingData;
                context.PushGlobal(scriptObjGlobalVariables);

                var res = xTemp.Render(context);

                return(res);
            }
示例#4
0
            public string Render(DataSet ds, dynamic dmodel)
            {
                string template = "{{func fn_DatasetItemUrl" + "\n"
                                  + $"    ret ('https://www.hlidacstatu.cz/data/Detail/{ds.DatasetId}/' + $0)"
                                  + "\n"
                                  + "end}}";

                template = template + "\n\n" + this.body;
                var xTemp = Scriban.Template.Parse(template);

                if (xTemp.HasErrors)
                {
                    throw new System.ApplicationException(xTemp
                                                          .Messages
                                                          .Select(m => m.ToString())
                                                          .Aggregate((f, s) => f + "\n" + s)
                                                          );
                }

                var xmodel = new Scriban.Runtime.ScriptObject();

                xmodel.Import(new { model = dmodel }, renamer: member => member.Name);
                var xfn = new Scriban.Runtime.ScriptObject();;

                xfn.Import(typeof(HlidacStatu.Lib.Data.External.DataSets.Registration.Template.Functions)
                           , renamer: member => member.Name);
                var context = new Scriban.TemplateContext {
                    MemberRenamer = member => member.Name
                };

                context.PushCulture(System.Globalization.CultureInfo.CurrentCulture);
                context.PushGlobal(xmodel);
                context.PushGlobal(xfn);
                var res = xTemp.Render(context);

                return(res);
            }