internal static object Split()

in src/PSRule.Rules.Azure/Data/Template/Functions.cs [2010:2038]


    internal static object Split(ITemplateContext context, object[] args)
    {
        if (args == null || args.Length != 2)
            throw ArgumentsOutOfRange(nameof(Split), args);

        if (!ExpressionHelpers.TryString(args[0], out var inputString) && args[0] is not IMock mock)
            throw ArgumentInvalidString(nameof(Split), "inputString");

        // Handle mocks to prevent exception
        if (args[0] is IMock)
            return new Mock.MockArray();

        if (inputString.StartsWith("{{", StringComparison.OrdinalIgnoreCase) && inputString.EndsWith("}}", StringComparison.OrdinalIgnoreCase))
            return new Mock.MockArray();

        string[] delimiter = null;
        if (ExpressionHelpers.TryString(args[1], out var single))
        {
            delimiter = [single];
        }
        else if (ExpressionHelpers.TryStringArray(args[1], out var delimiterArray))
        {
            delimiter = delimiterArray;
        }
        else
            throw ArgumentFormatInvalid(nameof(Split));

        return new JArray(inputString.Split(delimiter, StringSplitOptions.None));
    }