internal static object Concat()

in src/PSRule.Rules.Azure/Data/Template/Functions.cs [247:283]


    internal static object Concat(ITemplateContext context, object[] args)
    {
        if (CountArgs(args) < 1)
            throw ArgumentsOutOfRange(nameof(Concat), args);

        // String
        if (ExpressionHelpers.IsAnyString(args))
        {
            var result = new StringBuilder();
            for (var i = 0; i < args.Length; i++)
            {
                if (ExpressionHelpers.TryConvertString(args[i], out var s))
                    result.Append(s);
            }
            return result.ToString();
        }
        // Array
        else if (args[0] is Array || args[0] is JArray)
        {
            var result = new List<object>();
            for (var i = 0; i < args.Length; i++)
            {
                if (args[i] is Array array)
                {
                    for (var j = 0; j < array.Length; j++)
                        result.Add(array.GetValue(j));
                }
                else if (args[i] is JArray jArray)
                {
                    for (var j = 0; j < jArray.Count; j++)
                        result.Add(jArray[j]);
                }
            }
            return result.ToArray();
        }
        throw ArgumentFormatInvalid(nameof(Concat));
    }