in src/PSRule.Rules.Azure/Data/Template/Functions.cs [690:720]
internal static object Take(ITemplateContext context, object[] args)
{
if (CountArgs(args) != 2)
throw ArgumentsOutOfRange(nameof(Take), args);
if (!ExpressionHelpers.TryInt(args[1], out var numberToTake))
throw ArgumentInvalidInteger(nameof(Take), nameof(numberToTake));
var take = numberToTake <= 0 ? 0 : numberToTake;
if (ExpressionHelpers.TryString(args[0], out var soriginalValue))
{
if (take <= 0)
return string.Empty;
take = take > soriginalValue.Length ? soriginalValue.Length : take;
return soriginalValue.Substring(0, take);
}
else if (TryJArray(args[0], out var aoriginalvalue))
{
if (take <= 0)
return new JArray();
var result = new JArray();
for (var i = 0; i < aoriginalvalue.Count && i < take; i++)
result.Add(aoriginalvalue[i]);
return result;
}
throw ArgumentFormatInvalid(nameof(Take));
}