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));
}