internal static object UnionObject()

in src/PSRule.Rules.Azure/Data/Template/ExpressionHelpers.cs [737:776]


    internal static object UnionObject(object[] o, bool deepMerge)
    {
        var result = new JObject();
        if (o == null || o.Length == 0)
            return result;

        for (var i = 0; i < o.Length; i++)
        {
            if (o[i] is JObject jObject)
            {
                foreach (var property in jObject.Properties())
                {
                    ReplaceOrMergeProperty(result, property.Name, property.Value, deepMerge);
                }
            }
            else if (o[i] is IDictionary<string, string> dss)
            {
                foreach (var kv in dss)
                {
                    ReplaceOrMergeProperty(result, kv.Key, JToken.FromObject(kv.Value), deepMerge);
                }
            }
            else if (o[i] is IDictionary<string, object> dso)
            {
                foreach (var kv in dso)
                {
                    ReplaceOrMergeProperty(result, kv.Key, JToken.FromObject(kv.Value), deepMerge);
                }
            }
            else if (o[i] is IDictionary d)
            {
                foreach (DictionaryEntry kv in d)
                {
                    var key = kv.Key.ToString();
                    ReplaceOrMergeProperty(result, key, JToken.FromObject(kv.Value), deepMerge);
                }
            }
        }
        return result;
    }