private string CalculateJsonLdapAttributes(string json, ref int count) { if (count < 1) { return(json); } count--; var data = JsonConvert.DeserializeObject <Dictionary <string, object> >(json); var dataObj = new ScriptObject(StringComparer.OrdinalIgnoreCase); dataObj.Import(data, renamer: (member) => { return(member.Name); }); var ldapFunctionsObject = new ScriptObject(); ldapFunctionsObject.AddClassInstance(new TemplateFunctions(this)); var dataObject = new ScriptObject(); dataObject.Add("_", dataObj); var context = new TemplateContext { MemberRenamer = member => member.Name }; context.PushGlobal(ldapFunctionsObject); context.PushGlobal(dataObject); var t = Template.Parse(json); var rendered = t.Render(context); if (Template.Parse(rendered).Page.Body.Statements.OfType <ScriptExpressionStatement>().Any()) { //var tdat = JsonConvert.DeserializeObject<Dictionary<string, object>>(rendered); rendered = CalculateJsonLdapAttributes(rendered, ref count); } return(rendered); }