private static void VisitCondition()

in src/PSRule.Rules.Azure/Data/Policy/PolicyAssignmentVisitor.cs [986:1024]


        private static void VisitCondition(PolicyAssignmentContext context, PolicyDefinition policyDefinition, JObject condition)
        {
            if (condition.TryArrayProperty(PROPERTY_ALLOF, out var all) ||
                condition.TryArrayProperty(PROPERTY_ANYOF, out all))
            {
                foreach (var item in all.Values<JObject>().ToArray())
                {
                    VisitCondition(context, policyDefinition, item);
                }

                // Pull up child condition
                if (all.Count == 1)
                {
                    condition.Replace(all[0]);
                }
            }
            else if (condition.TryObjectProperty(PROPERTY_NOT, out var item))
            {
                VisitCondition(context, policyDefinition, item);
            }
            else
            {
                if (condition.TryStringProperty(PROPERTY_VALUE, out var s) && s.IsExpressionString())
                {
                    condition = VisitValueExpression(context, condition, s);
                }
                else if (condition.TryStringProperty(PROPERTY_FIELD, out var field))
                {
                    if (VisitField(context, policyDefinition, condition, field) == null)
                        condition.Remove();
                }
                else if (condition.TryObjectProperty(PROPERTY_COUNT, out var count))
                {
                    VisitCountExpression(context, policyDefinition, condition, count);
                }
                ResolveObject(context, condition);
                ConvertCondition(context, condition);
            }
        }