Exemplo n.º 1
0
        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);
        }