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