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; } }
public static string RenderJson(string json, string content) { var expando = JsonConvert.DeserializeObject <ExpandoObject>(json); var sObject = BuildScriptObject(expando); var templateCtx = new Scriban.TemplateContext(); templateCtx.PushGlobal(sObject); var template = Scriban.Template.Parse(content); var result = template.Render(templateCtx); return(result); }
public string Generate(Type recordType) { var typeInfo = new TypeInfo(recordType); ISet <TypeInfo> dependencies = new HashSet <TypeInfo>(); typeInfo.CollectDependencies(dependencies); var scriptObject = new ScriptObject(); scriptObject["type"] = typeInfo; scriptObject["dependencies"] = dependencies; var context = new Scriban.TemplateContext(); context.PushGlobal(scriptObject); return(template.Render(context)); }
static void Main(string[] args) { string text; text = @"{{ <span blah=""blu>p""\r\nbing=""go"">'Block <br> 1'" + "\r\n" + @"|string.downcase}}"; //text = @"{{ 'Block 1'}}"; //text = @"{{'nbsp'}}"; text = @"{{ x = 1; y= 2<br/> x+y }} "; var lexerOptions = new Scriban.Parsing.LexerOptions() { IgnoreHtmlNoise = true }; var template = Scriban.Template.Parse(text, lexerOptions: lexerOptions); var errors = template.Messages.Select(x => x.Message).ToList(); string res = ""; if (!template.HasErrors) { var context = new Scriban.TemplateContext(); res = template.Render(context); } else { foreach (var error in errors) { res += error + "\r\n"; } } Console.WriteLine(res); Console.ReadLine(); }
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); }
public static string RenderTemplate(string tmplName, ScriptObject scriptObject) { var templateContext = new Scriban.TemplateContext { MemberRenamer = m => m.Name, StrictVariables = true, RegexTimeOut = new TimeSpan(0, 0, seconds: 1), }; templateContext.PushGlobal(scriptObject); var tmplFile = ResolveResource(Path.Combine("support", tmplName)); if (!tmplFile.Exists) { throw new ArgumentException($"Cannot find template '{tmplFile.FullName}'"); } var template = Scriban.Template.Parse( File.ReadAllText(tmplFile.FullName), sourceFilePath: tmplFile.FullName); return(template.Render(templateContext)); }
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); }