private PathExpressionFn BuildSelector()

in src/PSRule/Runtime/ObjectPath/PathExpressionBuilder.cs [51:88]


        private PathExpressionFn BuildSelector(ITokenReader reader)
        {
            if (!reader.Peak(out var token) || token.Type == PathTokenType.EndFilter || token.Type == PathTokenType.EndGroup)
                return Return;

            reader.Next(out token);
            switch (token.Type)
            {
                case PathTokenType.DotSelector:
                    return DotSelector(reader, token.As<string>(), token.Option);

                case PathTokenType.RootRef:
                    return RootRef(reader);

                case PathTokenType.CurrentRef:
                    return CurrentRef(reader);

                case PathTokenType.IndexWildSelector:
                    return IndexWildSelector(reader);

                case PathTokenType.IndexSelector:
                    return IndexSelector(reader, token.As<int>());

                case PathTokenType.StartFilter:
                    return FilterSelector(reader);

                case PathTokenType.ArraySliceSelector:
                    return ArraySliceSelector(reader, token.As<int?[]>());

                case PathTokenType.Boolean:
                case PathTokenType.Integer:
                case PathTokenType.String:
                    return Literal(token.Arg);

                default:
                    return Return;
            }
        }